【发布时间】:2020-11-04 14:27:48
【问题描述】:
我有一个数据库表,其列类型为nvarchar(max),值为“17KAAKSPN13”
当使用'%17KA%'之类的testcolumn查询表时,不会返回任何结果。如果我使用 '%17KAA%' 进行查询,我会得到结果。
要对此进行测试,请创建一个简单的表并执行以下查询,然后查看第二个查询没有返回任何结果:
更新:服务器排序规则:Danish_Norwegian_CI_AS
CREATE TABLE [dbo].testtable(
testcolumn [nvarchar](max) NULL
)
insert into [dbo].testtable (testcolumn) values('17KAAKSPN13')
SELECT * FROM [dbo].testtable
SELECT * FROM [dbo].testtable WHERE testcolumn like '%17KA%'
结果:
编辑:
Here 是它不起作用的一个例子。我将其添加为编辑,因为有很多 cmets 和两个不合适的小提琴。这个问题似乎与排序规则有关。
【问题讨论】:
-
它与
%17KA%-sqlfiddle.com/#!18/9ba05/1按预期工作 -
您在添加示例方面做得很好。你能告诉使用你的排序规则吗?
SELECT CONVERT (varchar(256), SERVERPROPERTY('collation')); -
当然,服务器排序规则是 Danish_Norwegian_CI_AS
-
AA 是丹麦语中 Å 的另一种形式,这意味着您存储的
AA被视为 Å,而不是 AA。我不懂丹麦语,但之前出现过一个相同的问题 -
AA仍存储为AA,而不是Å。您可以使用select cast(testcolumn as varbinary(max)) from dbo.testtable;确认 -AA字符返回为0x41004100而Å将返回0xC500。
标签: sql sql-server sql-like