SQL:使用<;=和>;=将字符串与通配符进行比较
假设我有这样的表:SQL:使用<;=和>;=将字符串与通配符进行比较,sql,sql-server,wildcard,string-comparison,Sql,Sql Server,Wildcard,String Comparison,假设我有这样的表: Id | Name | Age ===================== 1 | Jose | 19 2 | Yolly | 26 20 | Abby | 3 29 | Tara | 4 我的查询语句是: 1) 从此表中选择*,其中Name='*Abby' 返回所有行;//第1-4行 5) 从这个表中选择*,其中Name>='*Abby'和Name='Abby'和Name这是因为,=和这是因为,=和通配符只有在使用类似的选择器时才会
Id | Name | Age
=====================
1 | Jose | 19
2 | Yolly | 26
20 | Abby | 3
29 | Tara | 4
我的查询语句是:
1) 从此表中选择*,其中Name='*Abby'代码>
返回所有行;//第1-4行
5) 从这个表中选择*,其中Name>='*Abby'和Name='Abby'和Name这是因为,=
和这是因为,=
和通配符只有在使用类似的选择器时才会被解释
因此,当您试图与字符串进行比较时,它将被逐字处理。因此,在比较中,使用了字典顺序
1) *
之前没有字母,因此您没有返回任何行
2) A
是字母表中的第一个字母,所以其余的名字都比艾比大,只有艾比和自己相等
3) (2的对立面)
4) 见1)
5) 见1)
6) 此条件相当于Name='Abby'
通配符仅在使用类似的opterator时解释
因此,当您试图与字符串进行比较时,它将被逐字处理。因此,在比较中,使用了字典顺序
1) *
之前没有字母,因此您没有返回任何行
2) A
是字母表中的第一个字母,所以其余的名字都比艾比大,只有艾比和自己相等
3) (2的对立面)
4) 见1)
5) 见1)
6) 此条件相当于使用通配符替换字符串中的任何其他字符。它们与WHERE
子句中的SQLLIKE
运算符一起使用。比如说
Select * from thisTable WHERE name LIKE '%Abby%'
这将返回字符串中任何带有Abby的值
有关所有通配符的说明,请查看此链接。通配符用于替换字符串中的任何其他字符。它们与WHERE
子句中的SQLLIKE
运算符一起使用。比如说
Select * from thisTable WHERE name LIKE '%Abby%'
这将返回字符串中任何带有Abby的值
查看此链接以了解所有通配符的说明在SQL Server中使用字符串时,会对每个字母进行排序,这些字母的排序顺序取决于排序规则。对于某些字符,排序方法更容易理解,它是按字母或数字顺序排列的:例如'a'<'b'
和'4'>'2'
。根据排序规则的不同,可以先字母后大小写('AaBbCc….'
),也可以先字母后大小写('ABC…Zabc'
)
让我们拿一个像'Abby'
这样的字符串,它将按照字母a、b、b、y的顺序排序(它们的出现顺序将根据您的排序规则,我不知道它是什么,但我将假设a'AaBbCc…
排序规则,因为它们更常见)。任何以'Aba'
开头的字符串的值都比'Abby'
要小,因为第三个字符(第一个不同的字符)的值较低。类似于'Abbie'
('i'
的值低于'y'
)。类似地,类似于'Abc'
的字符串将具有更大的值,因为'c'
的值高于'b'
(这是第一个不同的字符)
如果我们把数字加入其中,你可能会大吃一惊。例如,字符串(重要的是,我没有说明编号)'123456789'
的值低于字符串'9'
。这是因为第一个字符与第一个字符不同<代码>'9'
大于'1'
,因此'9'
具有“更高”的值。这就是为什么确保将数字存储为数字数据类型非常重要的原因之一,因为这种行为不太可能是您所期望的
然而,根据您的要求,SQL Server的通配符是'%'
和'.
(还有'^'
,m,但我在这里不介绍这一点)。'%
表示多个字符,而'
表示单个字符。如果要特别查找其中一个字符,则必须在括号中引用它们([]
)
使用equals(=
)运算符不会解析通配符。你需要使用一个函数,比如。因此,如果您想要一个以'a'
开头的单词,可以使用表达式WHERE ColumnName,比如'a%'
。如果您想搜索一个由6个字符组成并以'ed'
结尾的字符,您可以使用WHERE ColumnName,比如“\uuuuuuuuuuuued”
就像我之前说的,如果你想搜索其中一个特定的角色,你可以引用。因此,如果要搜索包含下划线的字符串,语法应该是WHERE ColumnName,比如“%[\u]%”
编辑:同样值得注意的是,当使用像这样的时,它们会受到排序规则敏感性的影响;例如,大小写和重音。例如,如果您使用的是区分大小写的排序规则,那么语句中的'Abby'像'abb%'
是不正确的,而'a'
和'a'
不是同一个大小写。与wise一样,语句中的'cova'='Covéa'
在区分重音的排序规则中是错误的('e'
和'e'
不被视为同一个字符)。在SQL Server中处理字符串时,对每个字母进行排序,这些字母的排序顺序取决于排序规则。对于某些字符,排序方法更容易理解,它是按字母或数字顺序排列的:例如'a'<'b'
和'4'>'2'
。根据排序规则,这可以通过字母和字母来完成