为什么空格会影响我的SQL语句结果?

时间:2014-08-17 16:22:00

标签: sql regex

我正在学习SQL,其中我读到空格并不会影响结果,但我尝试了这段代码

SELECT name 
FROM items 
WHERE name REGEXP '[^12345] boxes of frogs'

它给了我结果:

48 boxes of frogs
 7 boxes of frogs

当我在同一个表上运行此代码时

SELECT name 
FROM items 
WHERE name REGEXP '[^12345]boxes of frogs'

它给了我结果:

 3 boxes of frogs
48 boxes of frogs
 7 boxes of frogs

所以我的问题是为什么空格会影响我的结果?

1 个答案:

答案 0 :(得分:2)

这是由正则表达式引起的 - 它被定义为一个字符串,在字符串空间内很重要!总而言之,这更多是关于regexp而不是SQL;)

[^12345]匹配一个不是1,2,3,4或5的字符,因此它与SPACE匹配。

'[^12345] boxes of frogs'匹配名称在boxes of frogs之前没有1,2,3,4或4的所有行(请注意boxes之前的空格)。

"36 boxes of frogs" -> matches
"3 boxes of frogs" -> not matched

'[^12345]boxes of frogs'匹配3 boxes of frogs,因为[^12345]3boxes of frogs之间的SPACE匹配。

"36 boxes of frogs" -> matches
"3 boxes of frogs" -> matched
"3boxes of frogs" -> not matched

希望它变得清晰......