18

データベースから情報を取得しようとしています。
と のような言葉がLim Won MongありLimitedます。

クエリを実行すると、SELECT name FROM memberdb WHERE name LIKE '%LIM%'と の両方が表示され、からのデータのみが必要です。Lim Won MongLimitedLim Won Mong

クエリをどのように書き直せばよいですか?

4

3 に答える 3

40

次のクエリを実行します。

select name from memberdb where name like '% LIM %' OR name like "LIM %" OR name like "% LIM" OR name like "LIM"
于 2012-09-27T04:12:37.610 に答える
4

「lim」という単語に一致させたい場合 (「a lim」、「lim a」、「a lim a」、「lim」には一致しますが、「limit」や「alim」には一致しません)、 SQLREGEXPキーワード、単語境界 ([[:<:]]および[[:>:]]) を使用します。これらは、空白 (スペース、タブ、改行)、文字列の開始/終了、および一部の句読点にも一致します。

このようなもの:

SELECT name FROM memberdb WHERE name REGEXP '[[:<:]]LIM[[:>:]]'

REGEXP大文字と小文字が区別されないことに注意してください(バイナリ文字列を使用しない場合)。

スペースのみに一致させたい場合でも、REGEXP;を使用できます。これは、文字列の先頭またはスペースに一致し、次に「lim」、次にスペースまたは文字列の末尾に一致します。

SELECT name FROM memberdb WHERE name REGEXP '(^| )LIM( |$)'

どちらのソリューションも、サポートする SQL バージョンでテストされていますREGEXP(SQLite 3+; すべての Android は 3.5.9 以降を使用)。

于 2012-09-27T04:12:06.143 に答える
3

これを試してください:

SELECT name 
FROM MEMBERDB 
WHERE name LIKE 'LIM %' OR name LIKE '% LIM'
OR name LIKE '% LIM %' OR name LIKE 'LIM';

次のようなデータがあるとします。

'LIMITED'
'Lim Won Mong'
'Wang Tat Lim'
'ELIM TED'
'lim'
'Wang LIM tim'

このクエリは、次のデータのみを返します。

'Lim Won Mong'
'Wang Tat Lim'
'lim'
'Wang LIM tim'

このSQLFiddleを参照してください

于 2012-09-27T04:11:42.727 に答える