web-dev-qa-db-ja.com

MySQLは検索の問題から始まります

MySQLクエリで_%_ワイルドカードを使用すると問題が発生します。

http://www.w3schools.com/sql/sql_like.asp

その記事を読んで、私は_%_を使用していますが、期待していたものがまったく得られませんでした。

次のような一連の値があります

_1_1
1_2
2_1
2_2... etc
_

含む

_11_1
11_2
_

さて、場合によっては、値が_11_2_、または_1_2_などであるものを具体的に返したいと思います。これはうまくいきます。

_WHERE fieldName = '11_2'
_

など...予想どおり

ただし、場合によっては、_1_で始まるすべてのアイテム、または_11_で始まるすべてのアイテムを検索したいことがあります。

W3Schoolsリンクから、私は期待していた

_WHERE fieldName LIKE '1_%'
_

したがって、_1__で始まるものを見つけるには、具体的には、この例では、以下を返します。

_1_1
1_2
_

しかし、それも返します

_11_1
11_2
_

どうしてこれなの?そして、どうすればそれを乗り越えることができますか?

33
Jamie Hartnoll

アンダースコアは、単一文字のワイルドカードです。 SQLを次のように変更する必要があります。

WHERE fieldName LIKE '1%'

または、アンダースコアをエスケープできます

WHERE fieldName LIKE '1\_%' 
70
markblandford