SQL 服务器列相等但显示不相等。它们有何不同?
SQL Server Columns are equal but showing not equal. How are they different?
我有以下代码
select
Name, UniqueId,
checksum(Name) as CheckName,
checksum(UniqueId) as CheckId
from
DataManagementPipeline.dbo.pod_1801_energex_vegetation_zones
where
Name <> UniqueId
结果如下
Name UniqueId CheckName CheckId
********************************************************
VZ-4820/73 VZ-4820/73 -1880307869 -21513965
VZ-400706 VZ-400706 591267130 536293334
值相同(白色 space 和所有值)但它们看起来不同,有趣的是校验和不同。为什么它们不同是编码问题?有什么想法吗?
如果类型不同,CHECKSUM
将 return 不同的值。在 MSDN Checksum 查看更多信息。我认为在你的情况下, Name & UniqueId 是不同的类型。请看下面的示例代码
CREATE TABLE test(origname varchar(36), uniqueid nvarchar(36))
INSERT INTO test(origname,uniqueid)
values ('venkat',N'venkat')
SELECT CHECKSUM(origname), CHECKSUM(uniqueid) FROM test
-- Returned Values
178987073 1792344567
谜团解开了,UniqueId末尾的间距是ASCII字符(10),而不是我认为的白色space。因此,为什么他们出现不平等。所以我添加了这段代码
ltrim(rtrim(Name)) <> rtrim(ltrim(REPLACE(REPLACE(UniqueId, CHAR(13), ''), CHAR(10), '')))
在 notepad++ 中,我以为我已经添加了 ASCII(10)(换行符),但显然没有。我会接受@Venkataraman R 的回答,因为他是正确的。感谢您的帮助。
我有以下代码
select
Name, UniqueId,
checksum(Name) as CheckName,
checksum(UniqueId) as CheckId
from
DataManagementPipeline.dbo.pod_1801_energex_vegetation_zones
where
Name <> UniqueId
结果如下
Name UniqueId CheckName CheckId
********************************************************
VZ-4820/73 VZ-4820/73 -1880307869 -21513965
VZ-400706 VZ-400706 591267130 536293334
值相同(白色 space 和所有值)但它们看起来不同,有趣的是校验和不同。为什么它们不同是编码问题?有什么想法吗?
CHECKSUM
将 return 不同的值。在 MSDN Checksum 查看更多信息。我认为在你的情况下, Name & UniqueId 是不同的类型。请看下面的示例代码
CREATE TABLE test(origname varchar(36), uniqueid nvarchar(36))
INSERT INTO test(origname,uniqueid)
values ('venkat',N'venkat')
SELECT CHECKSUM(origname), CHECKSUM(uniqueid) FROM test
-- Returned Values
178987073 1792344567
谜团解开了,UniqueId末尾的间距是ASCII字符(10),而不是我认为的白色space。因此,为什么他们出现不平等。所以我添加了这段代码
ltrim(rtrim(Name)) <> rtrim(ltrim(REPLACE(REPLACE(UniqueId, CHAR(13), ''), CHAR(10), '')))
在 notepad++ 中,我以为我已经添加了 ASCII(10)(换行符),但显然没有。我会接受@Venkataraman R 的回答,因为他是正确的。感谢您的帮助。