![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
テーブル「USERS」の項目「FAMILY_NAME」「FIRST_NAME」をつなげた文字列に対して検索を行ないたいのですが、以下の「LIKE」を使ったSQL分ではカラムがないとエラーになるようです。
方法があれば教えて下さい。
よろしくお願いします。
テーブル:USERS
項目:
FAMILY_NAME FIRST_NAME
値:
三木 直人
中川 三郎
SELECT CONCAT(FAMILY_NAME,FIRST_NAME) AS USER_NAME
FROM USERS
WHERE USER_NAME LIKE '%三%'
No.2ベストアンサー
- 回答日時:
エラーにならなくはできますが、列の連結などの演算を行ったものを条件に指定すると、インデクスは利用できないと思いますよ?
【例1】
SELECT CONCAT(FAMILY_NAME,FIRST_NAME) AS USER_NAME FROM USERS
WHERE CONCAT(FAMILY_NAME,FIRST_NAME) LIKE '%三%'
【例2】
SELECT USER_NAME FROM (SELECT CONCAT(FAMILY_NAME,FIRST_NAME) AS USER_NAME FROM USERS AS USR
WHERE USER_NAME LIKE '%三%'
この回答への補足
回答ありがとうございます。
教えて頂いた、【例1】のSQL文で、検索する事が出来ました。
ありがとうございます。
>インデックスは利用できないと思いますよ?
上記について教えて頂きたいのですが、
インデックスを利用出来なくなる事の弊害は、総てのレコードに対して「列の連結」⇒「検索」の処理を行なう事により、処理時間がかかるという認識でよろしいのでしょうか?
No.3
- 回答日時:
>インデックスを利用出来なくなる事の弊害
仮にFAMILY_NAME列、FIRST_NAME列にインデクスを定義していても、
インデクスは利用されず、母体データを全件検索することになります。
そのため、データ数が数千件程度ならそれほど影響はないでしょうが、
数万件、数十万件となれば、データ件数に比例して検索性能が劣化することになります。
たいへん参考になりました。
ユーザー情報を登録しているテーブルなのでデータ数が増える事を前提に、検索機能を見直す事としました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- SQL Server SQLについて質問です。 a表がありその表には従業員名を保存するname列があります。 LIKE演算 1 2022/05/17 17:49
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- UNIX・Linux ワイルドカードの使い方 4 2023/08/08 20:51
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「名前(first name) 1 2023/06/24 13:03
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複合インデックスの設定に関して
-
検索エンジン検索結果から削除...
-
社名でデータ抽出できる検索シ...
-
LIKEの右側にカラムを指定でき...
-
複数のフィールドの検索
-
mySQL プライマリーキーのカラ...
-
SELECT文で、指定カラム以外の...
-
mysqlで50音順にorder byしたい。
-
DBエラーの意味
-
前と後という言葉の意味
-
SQLでカラムを追加し、条件に合...
-
スペースによる絞り込み検索をS...
-
構造が異なる二つのテーブルをu...
-
DB2(OS/390)のSECQTYについて
-
type date にnullをinsert
-
インデックスとは?オートナン...
-
Accessで文字列の一部を抽出す...
-
INDIRECT関数の代替方法は?
-
最大2147483647なのに何故int(1...
-
MySQLで先頭にカラムを追加
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユニーク制約とユニークインデ...
-
オートインクリメントについて
-
MySQLのKey属性「MUL」について
-
複数カラム検索で、LIKE "%検索...
-
SQL Server Management Studio...
-
大量の項目を対象に効率的に検...
-
インデックスについて
-
UPDATEつてインデックス貼って...
-
MySQLのインデックスについて
-
1000件以下の場合はカラム数に...
-
MySqlでのデータソートについて
-
テーブル設計について。
-
インデックス作成について
-
文字検索 (LIKE)を使った場合
-
複合インデックスの設定に関して
-
インデックスを張るべき項目に...
-
検索エンジン検索結果から削除...
-
INDIRECT関数の代替方法は?
-
DBの定義のサイズを大きくし過...
-
SELECT文で、指定カラム以外の...
おすすめ情報