我正在学习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
所以我的问题是为什么空格会影响我的结果?
答案 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]
与3
和boxes of frogs
之间的SPACE匹配。
"36 boxes of frogs" -> matches
"3 boxes of frogs" -> matched
"3boxes of frogs" -> not matched
希望它变得清晰......