MySQL Сравнения и "%" - PullRequest
       15

MySQL Сравнения и "%"

0 голосов
/ 01 сентября 2009
Will the following query evaluate to true (1), false (0), or NULL?

SELECT '%' LIKE ' % ';

ответ предоставлен

The '%' character is matched by '%', but not by the space characters surrounding it, so the expression evaluates to false.

+----------------+
| '%' LIKE ' % ' |
+----------------+
|            0  |
+----------------+

но я думал, что% может совпадать с нолем или более символов? так% может совпадать с% + пробелами? или символы не включают подстановочные знаки?

UPDATE:

о, но если сравнение происходит иным способом, и это правда ... хм ...

SELECT ' % ' LIKE '%';
Any non-NULL string is matched by the '%' metacharacter, so the expression evaluates to true.

+----------------+
| ' % ' LIKE '%' |
+----------------+
|          1    |
+----------------+

Ответы [ 2 ]

2 голосов
/ 01 сентября 2009

Логика неверна. Вы должны были написать

select ' % ' like '%'

Если вы пишете как «%», это означает, что в первой строке должен быть пробел, затем любые символы и еще один пробел в конце. Символы подстановки предназначены для оператора like, в первой строке это не символ подстановки, а символ.

0 голосов
/ 01 сентября 2009

Не совсем уверен, что ваш вопрос, но пример времени:

Таблица образцов, mytbl:

col1
----
abc
def
feh
zba
a b

Query1
------
select * from mytbl where col1 like '%b%'

Result1
-------
abc
zba
a b

Query2
------
select * from mytbl where col1 like '%b'

Result2
------
a b

Query3
------
select * from mytbl where col1 like 'a%'

Result3
-------
abc
a b

Query4
------
select * from mytbl where col1 like '% b%'

Result4
-------
a b

Query5
------
select * from mytbl where col1 like '% b %'

Result5
-------
null

Как видите, % соответствует нулю или более символов. Не % символы рассматриваются как литералы. Значит, % b % ищет anything + space + b + space + anything.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...