我正在通过 W3School 学习 SQL 基础知识并在了解 wildcards 的基础知识期间我执行了以下查询:
--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
开头,并以%
结尾。在中间部分,第一个部分表示“一个字符,然后零到多个字符之间,然后一个字符”,而第二个部分表示“一个字符,然后一个字符” ”。
考虑到它们后面的部分(最后部分)是%
,这意味着“在零个和多个字符之间”,我只能看到这两个子句是相同的,因为它们本质上都只是想要一个以 A
开头的字符串,然后至少有两个后续字符。也许如果 _
允许的字符至少有一些限制,那么它们可能会有所不同。
如果我必须选择,我会选择第二个,因为更直观。毕竟,许多其他掩码(例如a%%%%%%_%%_%%%%%
)会产生相同的效果,但为什么会出现奇怪的复杂性?
关于sql - SQL Server 中 _%_% 和 __% 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47505750/