sql-server - SELECT DISTINCT 返回意外的值
问题描述
我的 SQL Server 2016 数据库正在使用排序规则 SQL_Latin1_General_CP1_CI_AS。当我运行此查询时...
select distinct x from (
select '²' as x
union all
select '2'
) y
select distinct x from (
select N'²' as x
union all
select N'2'
) y
VARCHAR 版本认为这两个字符是不同的;NVARCHAR 版本认为它们是相同的。
到底他妈发生了什么?
解决方案
VARCHAR 版本认为这两个字符不同
数据库的默认值CoLLATE
(COLLATE SQL_Latin1_General_CP1_CI_AS)
在这里起到了作用。
COLLATE SQL_Latin1_General_CP1_CI_AS
考虑varchar
价值'²'
和'2'
作为2个不同的价值。
在 NVARCHAR 的情况下, COLLATE SQL_Latin1_General_CP1_CI_AS
将“²”和“2”视为相同的值。
它与 ACSII 或 UNICODE 无关
推荐阅读
- python - 如何对齐此列表中的每个单词?
- powerbi - 如何计算 Power BI 中 2 个度量值相等的位置
- javascript - 如何在反应原生功能组件中更改标题标题?
- r - 使用 scale_size_area 为 geom_point 设置绝对点大小
- javascript - 如何使它在js计算器中的等于后单击数字时显示先前的答案?
- c++ - 查找 for 循环输出的所有 3 组合
- java - 在我的画布上添加新贴纸时出现问题 - Android
- external - 在 Fortran 中为 Lapack 使用显式接口:链接查找模块文件失败
- typescript - TypeScript 提供(未指定)泛型类型作为泛型参数
- flutter - 显示来自 tmdb 的流派