sql - SQL Server 中 _%_% 和 __% 之间的区别

标签 sql sql-server tsql sql-server-2012

我正在通过 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/

相关文章:

c# - WCF 服务和本地主机 SQL Server 的连接字符串是什么

sql-server - 从不同的表列排序非常慢

sql-server - 将 SQL Server 添加到现有 Azure VM?

sql-server - 我们如何将大尺寸的十进制值转换为 float 并且没有指数值

sql - T-Sql 按 MIN() 选择和分组

mysql - SELECT 语句中的 SELECT 返回 0 计数

sql - 使用另一个表中的值更新 postgresql 表

mysql - 如何对此查询进行正确的内连接?

sql - 检查 NULL 或 0

sql-server - 唯一索引、varchar 列和(空白)空格的行为