2016-04-18 3 views
-1

Вот таблицапоиска строки с определенным значением

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

, как это SQL, искать, где преступление «Low» я использую preg_split, но я не знаю, чтобы соответствовать к базе данных

+1

Попробуйте это. выберите * из таблицы, где 'crime' like '% Low%' и' crime' не похожи '% Very Low%'; –

ответ

1

Используйте LIKE согласовани выбрать для частичного совпадения по нитке:

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

Если вам нужен случай нечувствительность, использовать LOWER(crime) преобразовать столбец с низким ercase.

+0

Этот запрос также возвращает данные, в которых значение столбца имеет «Очень низкий». OP нуждается только в данных, которые имеют «Низкий» –

+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'; 

В вашей таблице есть дополнительные записи, где строка преступления содержит подстроку «Низкий». Например. «Низкий, Средний» и «Средний, Низкий». Конечно, я не знаю их точного значения. Оба означают то же самое? Имеют ли они в виду, что преступление «низкое»? Или он не определился, «низкий или средний»? И считаете ли вы это «низким» или это будет еще один уровень выше «низкого»?

Затем есть запись «Очень низкая». Вы считаете этот «низкий» или уровень выше?

В зависимости от ответов, которые вы могли бы возвышаются над запросом, чтобы соответствовать все «низкий» подстроки:

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

Или использовать некоторые более продвинутые строку поиска, например,

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

, который получит «Низкий, Средний» и «Средний, Низкий», но не «Очень низкий».

Смежные вопросы