如何使用特定类型的连字符查询 Azure SQL 服务器?

How to query Azure SQL server with specific type of hyphen?

我的数据库中有一些垃圾。我想知道我有多少。 正确的数据应该是这样的 foo-bar。可惜我还有foo-bar.

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

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

两个查询的结果

foo-bar
foo-bar

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

您有 2 个问题。一个是 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;