tbというテーブルのbangというカラムに4が含まれていれば表示というのは
select * from tb where (bang) like '%4%' ;
という形になりますが、このtbテーブルにさらにname,tukiというカラムがあったとして
カラムに関係なくレコードのどこかに4が入っていれば抽出するというSQL文が書きたいです。
select * from tb where bang like '%4%' or name like '%4%' or tuki like '%4%' ;
と書くことで何とか今まではやってきたのですが、カラム数が増えてきてしまったので、ものすごく長いSQL文なってしまいました。
もう少しスマートにする方法はありませんか?
No.2ベストアンサー
- 回答日時:
>like '%4%'
のような前方後方一致はSQLの不得意分野で基本的にインデックスはきかないため、
なにをやっても高速化は期待できません
遅くても気にしないなら適当なセパレータを使って連結してからlikeを使えば
書式はすっきりします(さらにスピードはおちると思いますが・・・)
select * from tb where
concat_ws(char(0),bang,name,tuki) like '%4%;
ただし、この場合もbang,name,tukiは文字列型のカラムでnullがないことが前提になります
そうでない場合は例外処理をいくつかかます必要があるでしょう
No.1
- 回答日時:
「複数カラムで、LIKE "%検索語%"」 を上の検索欄に入れると、結構頻出質問のようですよ。
簡単に言うと、検索対象カラムを全部文字列連結(mysqlではconcat関数を使う)して like "%検索語%" で比較する。
カラム名をつぶさに並べないとならないのは同じだけど、like 以降は一回でよい。
しかし、実行時間は、like条件をorで繋げるのと替わらないか、逆に遅くなるか。いずれにしても対象行が増えるととても遅くなります。千行くらいでは、あんまり実感しないけど、万を超えるとやはり体感的にも遅い。。。
ほかにも、いくつか注意点が有るので、上記でヒットしたページの回答もつぶさに読んでください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- MySQL SELECT my_items.item_name, carts.count カンマ, の意味? 2 2023/01/23 07:12
- MySQL SQLについて教えて下さい。 SELECT分で、あるカラムにある日付の 半年先のデータを取って来たい 3 2022/12/07 22:28
- Oracle SQL update方法 2 2022/06/22 14:07
- PostgreSQL postgreSQL カラムの全ての値を取得したい 3 2022/10/07 12:33
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
複数カラムに対するLIKE文の最適化
MySQL
-
whereで全てを検索する方法
MySQL
-
複数カラム検索で、LIKE %検索語%""
MySQL
-
-
4
SQLのWHEREで全てを質問する方法
PHP
-
5
GROUP BYを行った後に結合したい。
Oracle
-
6
SELECT文で、指定カラム以外の全カラムを一括指定って可能でしょうか
MySQL
-
7
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
8
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
9
漢字での並び替え
SQL Server
-
10
テーブルの最後(最新)のレコードを抽出したい
MySQL
-
11
Excelで"で囲む方法
Excel(エクセル)
-
12
select文のwhere句に配列を入れて検索したい
MySQL
-
13
複数キーワードを複数カラムに照会するSQL文?
MySQL
-
14
テーブルに主キーを作らないデメリットは?
その他(Microsoft Office)
-
15
外部キーだけのテーブル(主キーがない?)
その他(データベース)
-
16
<input type=hidden" >で配列(複数の要素)を渡したいとき?"
PHP
-
17
MySQLで複数フィールドから同一語を検索するには・・・
MySQL
-
18
副問合せの書き方について
SQL Server
-
19
他のデータベースとのテーブル結合
SQL Server
-
20
テーブルの列数を調べたい
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UNIONする際、片方テーブルしか...
-
SELECT文で、指定カラム以外の...
-
MYSQLで全てのカラムから検索す...
-
now()かCURRENT_TIMESTAMPか
-
GREATESTで NULLをスルーする方...
-
Mysql DATE型のDEFAULT値
-
Select文で結合した時に、重複...
-
構造が異なる二つのテーブルをu...
-
AUTO_INCREMENTに0はダメ?
-
MySQLで先頭にカラムを追加
-
一部のカラムでdistinctし全て...
-
カラムとコラムの使い分け
-
MySQLで論理名を取得する方法
-
コンボボックスの抽出条件のLik...
-
update時にtimestampが更新され...
-
ROUND関数で、四捨五入ができな...
-
【SQL】select に ワイルドカー...
-
DBエラーの意味
-
Null.ブランク.スペースの違い...
-
sql , insert で空行(全ての列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一部のカラムでdistinctし全て...
-
SELECT文で、指定カラム以外の...
-
now()かCURRENT_TIMESTAMPか
-
UNIONする際、片方テーブルしか...
-
MYSQLで全てのカラムから検索す...
-
GREATESTで NULLをスルーする方...
-
構造が異なる二つのテーブルをu...
-
カラムをコピーして、新規カラ...
-
SQLでカラムを追加し、条件に合...
-
ドロップダウンリストの連動し...
-
カラムとコラムの使い分け
-
sql , insert で空行(全ての列...
-
エクセルかワードで家系図を作...
-
MySQLで先頭にカラムを追加
-
AUTO_INCREMENTに0はダメ?
-
日付を一括UPDATE
-
DBエラーの意味
-
SQLで、行ごとのとある要素を比...
-
ROUND関数で、四捨五入ができな...
-
SQLについて教えて下さい。 SEL...
おすすめ情報