テーブル「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 "%検索...
-
一部のカラムでdistinctし全て...
-
SQLServerでNULLを挿入したいです
-
UNIONする際、片方テーブルしか...
-
group byで最後のレコードを抽...
-
カラムをコピーして、新規カラ...
-
日付を一括UPDATE
-
【Transact-sql】 where条件、i...
-
MySQL テーブルの一部のカラム...
-
SQLについて教えて下さい。 SEL...
-
DBの定義のサイズを大きくし過...
-
BULK INSERT時のNull許容について
-
insert、selectのやり方を教え...
-
MYSQLで小数点を表示する場合と...
-
構造が異なる二つのテーブルをu...
-
MySQLのあいまい検索について
-
AES_ENCRYPTの利用
-
MySQLで論理名を取得する方法
-
コンボボックスの抽出条件のLik...
-
INDIRECT関数の代替方法は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユニーク制約とユニークインデ...
-
複数カラム検索で、LIKE "%検索...
-
インデックスについて
-
UPDATEつてインデックス貼って...
-
SQL Server Management Studio...
-
データベースの設計について教...
-
MySQLのKey属性「MUL」について
-
MySQLのauto incrementについて
-
テーブル設計について。
-
インデックスの概念
-
複合インデックスの設定に関して
-
インデックスを張るべき項目に...
-
INDIRECT関数の代替方法は?
-
SQLServerでNULLを挿入したいです
-
SELECT文で、指定カラム以外の...
-
UNIONする際、片方テーブルしか...
-
一部のカラムでdistinctし全て...
-
テーブルの列数を調べたい
-
DBの定義のサイズを大きくし過...
-
BULK INSERT時のNull許容について
おすすめ情報