2012-03-07 6 views
30

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' 
など...期待どおり

しかし、私はW3Schoolsのリンクから11

で始まる1または全ての項目で始まるすべての項目を検索するいくつかのケースでは、私は何かを見つけるために

WHERE fieldName LIKE '1_%' 

を期待していましたそれはまたを返し、

1_1 
1_2 

しかし:ので、私の例では、戻って、特に1_で始まります

11_1 
11_2 

これはなぜですか?そして私はそれをどうやって終わらせることができますか?

答えて

58

アンダースコアは、1文字のワイルドカードです。あなたのような何かにあなたのSQLを変更する必要があります:

WHERE fieldName LIKE '1%' 

それとも、アンダースコア

WHERE fieldName LIKE '1\_%' 
を逃れることができます