ars*_*in3 10 sql-server collation
对于LIKE
查询,Latin1_General_CS_AS排序规则不区分大小写.根据向微软提交的错误报告,这被列为"按设计".
但是,Latin1_General_Bin排序规则也区分大小写,并且与LIKE
查询完全一样.
您可以在这个简单的查询中看到差异:
SELECT
MyColumn AS Latin1_General_Bin
FROM MyTable
WHERE MyColumn LIKE '%[a-z]%' COLLATE Latin1_General_Bin;
SELECT
MyColumn AS Latin1_General_CS_AS
FROM MyTable
WHERE MyColumn LIKE '%[a-z]%' COLLATE Latin1_General_CS_AS;
Run Code Online (Sandbox Code Playgroud)
我的问题是:
LIKE
?我打算将Latin1_General_CS_AS标准化为任何区分大小写的数据库,但这似乎是一个等待发生的微妙查询错误.
Mar*_*ith 14
这不是一个正则表达式.范围[a-z]
只是意味着>='a' AND <='z'
.
根据该整理,包括除资本之外的所有字母Z
.
在SQL_Latin1_General_CP1_CS_AS
所有除资本A
一跤,排序顺序中.
如果仍然不清楚,请查看以下的排序顺序; 对于三种不同的排序规则
SELECT *
FROM (VALUES ('A'),('B'),('Y'),('Z'), ('a'),('b'),('y'),('z')) V(C)
ORDER BY C COLLATE Latin1_General_Bin
Run Code Online (Sandbox Code Playgroud)
您会看到二进制排序规则将所有大写字母组合在一起,而另外两个则没有.
+--------------------+----------------------+-------------------------------+
| Latin1_General_Bin | Latin1_General_CS_AS | SQL_Latin1_General_CP1_CS_AS |
+--------------------+----------------------+-------------------------------+
| A | a | A |
| B | A | a |
| Y | b | B |
| Z | B | b |
| a | y | Y |
| b | Y | y |
| y | z | Z |
| z | Z | z |
+--------------------+----------------------+-------------------------------+
Run Code Online (Sandbox Code Playgroud)
在范围搜索中,范围中包含的字符可能会根据排序规则的排序规则而有所不同.
归档时间: |
|
查看次数: |
10988 次 |
最近记录: |