为什么SQL Server认为CHAR(49)和CHAR(185)是相同的?
当将1输入NVARCHAR或TEXT类型的列时,它将其视为CHAR(49)(一)和CHAR(185)(上标一)
示例数据:
SELECT CAST('1111' AS TEXT) AS col1 INTO CharTest;
Run Code Online (Sandbox Code Playgroud)
选择脚本:
SELECT * FROM CharTest WHERE col1 LIKE '%'+CHAR(49)+'%';
SELECT * FROM CharTest WHERE col1 LIKE '%'+CHAR(185)+'%';
Run Code Online (Sandbox Code Playgroud)
两个陈述都返回:1111
小智 6
不同的校对应该这样做
SELECT * FROM CharTest WHERE
col1 LIKE '%'+CHAR(49)+'%' COLLATE SQL_Latin1_General_CP1_CS_AS;
SELECT * FROM CharTest WHERE
col1 LIKE '%'+CHAR(185)+'%' COLLATE SQL_Latin1_General_CP1_CS_AS;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |