LIKE 'string' и LIKE '% string%' в mysql не работают одинаково - PullRequest
0 голосов
/ 03 января 2019

У меня путаница в названии выше.

SELECT * FROM `parties` WHERE `party_name` LIKE '%DMK%' ORDER BY `id` ASC

Здесь я получаю 4 строки из БД, внутри party_name всех строк содержится 'DMK'.

SELECT * FROM `parties` WHERE `party_name` LIKE 'DMK' ORDER BY `id` ASC

Здесь я получаю одну строку, которая содержит party_name как 'DMK'

Первый запрос ищет часть строк. второй запрос ищет точную строку

Это ??

или оба одинаковы?

Извините за этот тип вопроса, Thanx

Ответы [ 3 ]

0 голосов
/ 03 января 2019
SELECT * FROM `parties` WHERE `party_name` LIKE '%DMK%' ORDER BY `id` ASC 

означает всю строку, содержащую DMK, например ('DMK1,' ADMK ', ADMKB')

SELECT * FROM `parties` WHERE `party_name` LIKE 'DMK' ORDER BY `id` ASC

означает всю строку, равную DMK, и эквивалентную

SELECT * FROM `parties` WHERE `party_name` = 'DMK' ORDER BY `id` ASC 
0 голосов
/ 03 января 2019
party_name LIKE 'DMK'

будет соответствовать только столбцу со значением 'DMK'.по сути, это то же самое, что party_name = 'DMK'

party_name LIKE '%DMK%'

. Это будет совпадать со строкой, где 'DMK' существует где угодно, например.abcDMK, abcDMKefg, DMKabc

party_name LIKE '%DMK'

это будет соответствовать строке, где 'DMK' существует в последнем примере: оно будет соответствовать abcDMK, но не будет соответствовать abcDMKefg

party_name LIKE 'DMK%'

это будет соответствоватьстрока, в которой 'DMK' существует в начальном примере: она не будет abcDMK, но не будет соответствовать abcDMKefg

0 голосов
/ 03 января 2019

Если вы используете LIKE без подстановочного знака%, то поведение будет равно (=).

Так что если вы напишите:

 SELECT * FROM parties WHERE party_name LIKE 'DMK' ORDER BY id ASC

Это то же самое из:

SELECT * FROM parties WHERE party_name = 'DMK' ORDER BY id ASC

Если вы напишите:

SELECT * FROM `parties` WHERE `party_name` LIKE '%DMK%' ORDER BY `id` ASC

Вы найдете всех party_name, которые объединяют DMK

Если вы напишите:

SELECT * FROM `parties` WHERE `party_name` LIKE '%DMK' ORDER BY `id` ASC

Вы найдете, что все party_name заканчиваются на DMK

Если вы напишите:

SELECT * FROM `parties` WHERE `party_name` LIKE 'DMK%' ORDER BY `id` ASC

Вы найдете, что все party_name начинаются с DMK

...