sql server中_%_%和__%之间的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server中_%_%和__%之间的区别相关的知识,希望对你有一定的参考价值。

我正在通过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%%%%%%_%%_%%%%%)将产生相同的效果,但为什么这种奇怪的复杂性呢?

另一答案

对于Like运算符,单个下划线“_”表示任何单个字符,因此如果你将一个下划线表示为

ColumnName LIKE 'a_%'

你基本上说你需要一个字符串,其中第一个字母是'a',然后是另一个单个字符,然后是任何东西或什么也没有。

ColumnName LIKE 'a__%'ColumnName LIKE 'a_%_%'

两个表达式都表示第一个字母'a',然后是两个字符,然后是任何内容。或者用简单的英语,任何以a开头的3个或更多字符的字符串。

以上是关于sql server中_%_%和__%之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

$_SERVER存储

一些SQl server2005的填空题

比较 SQL Server 中 3 列之间的日期值并在 SQL Server 中提取资产信息

搞定了100分!两个问题! sqlserver

关于$_SERVER['SERVER_NAME']和$_SERVER['HTTP_HOST']的区别

sqlserver填空题求助