データベースから情報を取得しようとしています。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」には一致しない)、 SQL REGEXP
キーワードを使用し、Wordの境界([[:<:]]
および[[:>:]]
)。これらは、空白(スペース、タブ、改行)、文字列の開始/終了、およびいくつかの句読点にも一致します。
このようなもの:
SELECT name FROM memberdb WHERE name REGEXP '[[:<:]]LIM[[:>:]]'
REGEXP
は大文字と小文字を区別しないことに注意してください(バイナリ文字列を使用する場合を除く)。
スペースのみに一致させる場合は、REGEXP
を使用できます。これは、文字列の先頭またはスペース、次に「lim」、次にスペースまたは文字列の末尾のいずれかに一致します。
SELECT name FROM memberdb WHERE name REGEXP '(^| )LIM( |$)'
両方のソリューションは、REGEXP
をサポートするSQLバージョンでテストされています(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'