如何使用特定类型的连字符查询Azure SQL server



我的数据库中有一些垃圾。我想知道我有多少。正确的数据应该像这个foo条。不幸的是,我也有foo-bar。

如果我运行两个查询,我会得到相同的数据。

select * from data
where field like '%-%';
select * from data
where field like '%-%';

两个查询的结果

foo-bar
foo-bar

如何只查询包含-和不包含-的数据?azure web客户端和azure数据工作室似乎都以某种方式转换了这个字符,就好像只有一个一样。这是两个不同的Unicode字符https://www.codetable.net/decimal/45对https://www.codetable.net/decimal/65293

您有两个问题。一种是Unicode文字字符串需要一个N前缀来表示Unicode。另一种是需要二进制排序转换来比较代码点而不是字符:

SELECT * FROM data
WHERE field LIKE N'%-%' COLLATE Latin1_General_BIN;
SELECT * FROM data
WHERE field LIKE N'%-%' COLLATE Latin1_General_BIN;

最新更新