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 | +----------------+
但我认为%可以匹配零或更多字符?所以%可以匹配%+空格?或者字符是否包含通配符?
更新
哦,但如果比较发生了另一种方式,那就是真的......嗯...
SELECT ' % ' LIKE '%';
Any non-NULL string is matched by the '%' metacharacter, so the expression evaluates to true. +----------------+ | ' % ' LIKE '%' | +----------------+ | 1 | +----------------+
答案 0 :(得分:2)
逻辑是错误的。你必须写
select ' % ' like '%'
如果你写的是'%',那就意味着第一个字符串必须是空格,然后是最后的任何符号和一个空格。通配符用于类似语句,在第一个字符串中它不是通配符而是符号。
答案 1 :(得分:0)
不完全确定您的问题是什么,但示例时间:
示例表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
。
希望这有帮助。