72

SQLの学習。フィールドタイトルのある簡単なテーブルゲームを用意します。タイトルで検索したい。というゲームがあり、パラメーターを指定しAge of Empires III: Dynastiesて使用すると、すべてが正常に機能し、検索でその名前のレコードが返されます。しかし、で検索すると、レコードは返されません。LIKEAge of Empires III: DynastiesAge of Empires III

SELECT * from games WHERE (lower(title) LIKE 'age of empires III');

これは何も返しません。代わりに何か他のものを使用する必要がありLIKEますか?

MySQLを使用しています。

4

6 に答える 6

93
SELECT * from games WHERE (lower(title) LIKE 'age of empires III');

上記のクエリは、どの行にも存在しない「エイジオブエンパイアIII」の正確な文字列を探しているため、行を返しません。

'age of empires'したがって、この文字列を、サブ文字列として使用する必要のある別の文字列と一致させるには、'%your string goes here%'

mysql文字列の比較の詳細

これを試す必要があります

SELECT * from games WHERE (lower(title) LIKE '%age of empires III%');

Like '%age of empires III%'thisは、行内の一致するサブストリングを検索し、結果に表示されます。

于 2013-02-16T07:52:57.063 に答える
57

ワイルドカード%を使用する必要があります:

SELECT * from games WHERE (lower(title) LIKE 'age of empires III%');
于 2013-02-16T07:45:53.477 に答える
11

を使用する以外%に、age of empires III小文字にするage of empires iiiことで、クエリは次のようになります。

select *
from games
where lower(title) like 'age of empires iii%'
于 2019-03-29T07:34:21.347 に答える
4

COLLATE UTF8_GENERAL_CI無視ケースとして機能します。使用する:

SELECT * from games WHERE title COLLATE UTF8_GENERAL_CI LIKE 'age of empires III%';

また

SELECT * from games WHERE LOWER(title) LIKE 'age of empires III%';
于 2013-02-16T07:45:21.913 に答える
0

SQLでは%---%はその間の任意の文字に一致します。 select * from table_name where column_name line '%kk%';たとえば、「ss」を含むすべての文字列に一致します。

  • llssll
  • ssll文字列の先頭を一致させる場合は、代わりに「ss%」を使用する必要があります。 select * from table_name where column_name line 'ss%';このクエリはssllのみを返します。
于 2021-11-10T00:48:39.480 に答える
0

%なしで「like」演算子を使用した場合、likeはequal(=)として機能します。つまり、コードは次のようになります。

select * from games where lower(title)= 'age of empires iii';

したがって、一致するデータが見つからないため、何も返されません。

ただし、タイトルの一部のみをパラメータと比較する場合は、%記号を使用する必要があります。さまざまな位置で使用できます。これは、データベースのロジックによって異なります。

通常、これはパラメーターの開始と終了で使用され、コードは次のようになります。

select * from games where lower(title) like '%age of empires iii%';

これにより、最初または最後、あるいはその両方に一致しない文字が含まれている場合でも、タイトル列の値が検索されます。検索する重要な条件は、タイトルフィールド(この場合はタイトルが「Ageof Empires III」)のどこかにあるlike演算子(この場合は「ageof empiresiii」)に引数として送信される値です。 :Dynasties ")であり、この条件が真であるため、この行と同じケースの他の行が返されます。

于 2021-11-10T03:08:55.337 に答える