大小写敏感的 SQL 区分大小写。

4

我将尝试做一个区分大小写的请求。

例如,如果在我的数据库中有以下内容:

ABCdef
abcDEF
abcdef

这个请求是

SELECT * FROM table WHERE col = 'abcdef'

但是我得到了3行结果,而我只想要abcdef。

我尝试寻找解决方案:

SELECT * 
FROM table 
WHERE col COLLATE Latin1_General_CS_AS = 'abcdef' COLLATE Latin1_General_CS_AS 

但是我遇到了这个错误:

未知排序规则:'Latin1_General_CS_AS'{"success":false,"error":"#1273 - Unknown collation: 'Latin1_General_CS_AS'"}

谢谢。


1
首先,你应该提出一个问题。其次,你应该检查为什么排序规则是未知的。 - alzaimar
这是用于哪种关系型数据库管理系统?SQL只是查询语言,不是具体的数据库产品... - marc_s
3个回答

4
感谢您的帮助,我找到了解决方案。问题不在于使用latin1还是utf8编码。
COLLATE utf8_bin

1

Latin1_General_CS_AS 是 SQL Server 的排序规则。

对于 MySQL,请尝试使用 latin1_general_cs

WHERE col = 'abcdef' COLLATE latin1_general_cs 

0

大小写敏感的字符串 SQL 区分大小写 SQL server 2008 R2 或之后版本可以转换为二进制:

  1. 第一步将字符串转换为二进制
  2. 最后一步比较两个二进制字符串

示例:

 SELECT * FROM dbo.staffl WHERE CAST(unitcode AS BINARY(50)) = CAST ('pcs' AS BINARY(50))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接