2016-04-18 7 views
-1

ここでテーブル検索行

*City  Crime* 
    Bangkok High 
    Hongkong Very High 
    Seoul  Low, Average 
    Texas  Average, High 
    Jakarta Low 
    Singapore Very Low 
    Las Vegas Average, Low 

どのように私は、preg_splitを使用しますが、私はデータベース

+1

これを試してください。 「%Low%」のような「犯罪」と「%Very Low%」のようなものではない犯罪を選択します。 –

答えて

1

使用インクルードと一致するのか分からない 犯罪「Low」に検索するためのSQLだですあなたはケース非感受性が必要な場合は、低に列を変換するためにLOWER(crime)を使用

SELECT * 
FROM cities 
WHERE crime LIKE '%Low%' 

:文字列の部分一致のために選択するLIKEマッチャーercase。

+0

このクエリは、列の値が「非常に低い」データも返します。 OPには、「Low」のデータのみが必要です。 –

+0

ああ、質問に基づいているかどうかは分かりませんでした。その場合は単純なAND結合で十分です。 –

0
select * 
from table 
where 
    `crime` like '%Low%' 
    and `crime` not like '%Very Low%'; 
1

お試しください。

のMySQL:

SELECT * 
FROM City 
WHERE `Crime` REGEXP '^Low' or `Crime` REGEXP ', Low' 
or `Crime` REGEXP 'Low,' 

SQL:

select * from City 
where (Crime like 'low%' or Crime like '%, low%' or Crime like '%low,%') 
0

あなたは、レコードいくつかの基準がWHEREで満たされを選択します。

select * from mytable where crime = 'Low'; 

テーブルに、犯罪文字列に「低」部分文字列が含まれているエントリがさらにあります。例えば。 「Low、Average」、「Average、Low」の3つがあります。私はもちろん、これらの正確な意味を知らない。どちらも同じ意味ですか?彼らは犯罪が「avarage」に低いことを意味しますか?それとも、「低」か「平均​​」かどうかは未定ですか?そして、あなたはこれを「低」と数えますか、それとも「低」より上のレベルでしょうか?

「非常に低い」というエントリがあります。あなたはこれを「低い」レベルかそれ以上のレベルと考えますか?例えば、

select * from mytable where crime like '%Low%'; 

またはいくつかのより高度な文字列検索を使用します。

の回答によっては、すべて「低」のサブストリングに一致するように、クエリの上に拡張することができ

select * from mytable 
where ',' || replace(replace(crime, ', ', ','), ' ,', ',') || ',' like '%,Low,%'; 

「低」、「平均」および「平均、低」を取得しますが、「非常に低」を取得しません。