データベースから情報を取得しようとしています。
と のような言葉がLim Won Mong
ありLimited
ます。
クエリを実行すると、SELECT name FROM memberdb WHERE name LIKE '%LIM%'
と の両方が表示され、からのデータのみが必要です。Lim Won Mong
Limited
Lim Won Mong
クエリをどのように書き直せばよいですか?
次のクエリを実行します。
select name from memberdb where name like '% LIM %' OR name like "LIM %" OR name like "% LIM" OR name like "LIM"
「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 以降を使用)。
これを試してください:
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'