基礎からのmysql(131p)にsql文にてあいまい検索をするときのやり方が記述されています。
SQL
1select * from tb where bang ='A101';
たとえば「A101もA102も抽出したい」というときはあいまい検索を行います。「~の文字を含む」というようなあいまいな条件で検索したいときは、LIKEを使います。
たとえば「'あ'という文字を含む」という条件は、「LIKE'あ'」となります。上のSQL文は次のようにしても、結果はまったく同じになります。
SQL
1select * from tb where like 'A101';
ここで疑問が二つあって、一つ目が「...where like
」とありますが、whereのあとは、カラム名を入れる「...where カラム名 like
」という形でなければいけないのではないのでしょうか。
現にmysql5.5.16でselect * from tb where like "A101"
といれると
mysql
1mysql> select * from tb1d where like "A101"; 2ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 3corresponds to your MySQL server version for the right syntax to use near 'like 4"A101"' at line 1
※mysqlで弄っているテーブルは、tbではなくtb1dですがtb=tb1dと思ってください。
となり、エラーが発生します。誤植なのか何か足りない部分があるのか。いったいどういうことなのでしょうか。
最後の質問ですが「'あ'という文字を含む」という条件は、「LIKE'あ'」となる...とありますが、
LIKE'あ'で「あ」を含んだものを取得できるのなら、任意の文字列と1文字を意味する%や_などのワイルドカードはいるのでしょうか。
例えば「九州」という単語をDBから取得したいとき「...like "%州"」と「like "州"」は
「○●州(州単独も含めて)」を取得できるのだから、わざわざワイルドカードを利用する必要があるのだろうか…?と思っております。つまりいまいちワイルドカードの必要性がわからないのです。
回答3件
あなたの回答
tips
プレビュー