我正在学习SQL的基础知识 W3School 在理解基础知识的过程中 通配符 我经历了以下查询:
--Finds any values that start with "a" and are at least 3 characters in length
WHERE CustomerName LIKE 'a_%_%'
按照以下示例查询将搜索表所在的位置 CustomerName
列以'a'开头,长度至少为3个字符。
但是,我也尝试以下查询:
WHERE CustomerName LIKE 'a__%'
上面的查询也给了我完全相同的结果。
我想知道两个查询是否有任何区别?在某些特定情况下,第二个查询是否会产生不同的输出?如果是,那将是什么情景?
两者都以 A
并以...结束 %
。在中间部分,第一个说“一个字符,然后在零和多个字符之间,然后一个字符“,而第二个说”一个char,然后一个char”。
考虑到它们之后的部分(最后一部分)是 %
, 意思是 ”在零和多个字符之间“,我只能看到两个子句相同,因为它们本身只是想要一个以字符串开头的字符串 A
然后至少有两个跟随字符。也许如果对于允许的角色至少有一些限制 _
那么也许他们可能会有所不同。
如果我不得不选择,我会选择第二个更直观。毕竟,许多其他面具(例如 a%%%%%%_%%_%%%%%
)会产生同样的效果,但为什么会出现奇怪的复杂性?
对于Like运算符,单个下划线“_”表示任何单个字符,因此如果你将一个下划线表示为
ColumnName LIKE 'a_%'
你基本上说你需要一个字符串,其中第一个字母是'a',然后是另一个单个字符,然后是任何东西或什么都没有。
ColumnName LIKE 'a__%'
要么 ColumnName LIKE 'a_%_%'
两个表达式都表示第一个字母'a',然后是两个字符,然后是任何东西或什么都没有。或者用简单的英语,任何以3个或更多字符开头的字符串 a
。