【发布时间】:2015-03-26 13:28:12
【问题描述】:
我对 SQL 数据库的 SQL 查询有问题。我不能简单地找出原因。
我想获取 ShortName 包含“A”的所有行。
ShortName 列的数据类型为 nvarchar(max)。
我的桌子是这样的:
如果我对数据库执行此查询:
SELECT ID, ShortName FROM Airports where ShortName LIKE '%A%';
结果:
如果我执行此查询:
SELECT ID, ShortName FROM Airports where ShortName LIKE '%AA%';
结果:
如您所见,它不会占用短名称包含“A”的所有行。 但为什么?我一直在寻找答案,但我找不到。
【问题讨论】:
-
那么为什么
'%A%'不返回AAR和AAL? -
是的,这个问题很简单
-
我无法重现这个。您的第一个查询应该返回更多行。但是,到底为什么要在
NVARCHAR(MAX)字段中存储三个字母代码? -
您确定所有字符串中的
A都相同吗?因为有可能,例如,在一个字符串中包含西里尔字母 A,而在其他字符串中包含拉丁字母.. -
showing cast(shortname as varbinary(max)) 将证实这一点。
标签: sql-server