我有一个数据库表,其列类型为 nvarchar(max)
和值'17kaakspn13'
使用testcolumn(如“%17ka%”)查询表时,不会返回任何结果。如果使用“%17kaa%”进行查询,则会得到一个结果。
要对此进行测试,请创建一个简单的表并执行以下查询,并确保第二个查询不会返回任何结果:
更新:服务器排序规则:丹麦语\u挪威语\u ci \u 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%'
结果:
编辑:
这是一个不起作用的例子。我添加这个作为编辑,因为有很多评论和两个不合适的小提琴。这个问题似乎与校勘有关。
3条答案
按热度按时间5fjcxozz1#
从这里来-https://stackoverflow.com/a/53802337/13927312
试着看看在你的模式之前加n(标记为unicode)是否有什么不同。它可能无法解释这种行为,但可以解决你的问题。
iugsix8n2#
您可以将collate子句转换为排序规则,这使得
LIKE
去锻炼。从msdn到排序规则
字符文本和变量被指定为当前数据库的默认排序规则。列引用被指定了列的定义排序规则。
fivyi3re3#
我认为问题在于,在挪威语和丹麦语中,“aa”与“a”是不同的字符。所以你不能把它当作“a”来搜索。
原因是“aa”是一种表达方式å.
因此,您的代码工作正常。可以转换为其他排序规则,其中
'AA'
只是'A'
跟随'A'
.