散列几个字符串tsql
我正在尝试创建一个独特的哈希,如下所示:散列几个字符串tsql,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在尝试创建一个独特的哈希,如下所示: SELECT CAST(HASHBYTES('SHA1', LTRIM(RTRIM(ISNULL('9',''))) + LTRIM(RTRIM(isnull('X',''))) + LTRIM(RTRIM(isnull('',''))) + LTRIM(RTRIM(isnull('Y',''))) + LTRIM(RTRIM(isnull('','')))
SELECT
CAST(HASHBYTES('SHA1',
LTRIM(RTRIM(ISNULL('9',''))) +
LTRIM(RTRIM(isnull('X',''))) +
LTRIM(RTRIM(isnull('',''))) +
LTRIM(RTRIM(isnull('Y',''))) +
LTRIM(RTRIM(isnull('','')))) AS VARBINARY(20))
SELECT
CAST(HASHBYTES('SHA1',
LTRIM(RTRIM(isnull('9',''))) +
LTRIM(RTRIM(isnull('X',''))) +
LTRIM(RTRIM(isnull('Y',''))) +
LTRIM(RTRIM(isnull('',''))) +
LTRIM(RTRIM(isnull('','')))) AS VARBINARY(20))
不幸的是,尽管字符串不同,我最终还是得到了相同的哈希。你知道为什么吗
附言:
这就解决了上述“问题”:
SELECT LTRIM(RTRIM(ISNULL('9', '-'))) + N',' + LTRIM(RTRIM(ISNULL('X', '-')))
+ N',' + LTRIM(RTRIM(ISNULL('', '-'))) + N',' + LTRIM(RTRIM(ISNULL('Y',
'-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-'))) ,
CAST(HASHBYTES('SHA1',
LTRIM(RTRIM(ISNULL('9', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('X', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('Y', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-')))) AS VARBINARY(20))
SELECT LTRIM(RTRIM(ISNULL('9', '-'))) + N',' + LTRIM(RTRIM(ISNULL('X', '-')))
+ N',' + LTRIM(RTRIM(ISNULL('Y', '-'))) + N',' + LTRIM(RTRIM(ISNULL('',
'-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-'))) ,
CAST(HASHBYTES('SHA1',
LTRIM(RTRIM(ISNULL('9', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('X', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('Y', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-'))) + N','
+ LTRIM(RTRIM(ISNULL('', '-')))) AS VARBINARY(20))
因为没有不同的标准:
LTRIM(RTRIM(ISNULL('9',''))) +
LTRIM(RTRIM(isnull('X',''))) +
LTRIM(RTRIM(isnull('',''))) +
LTRIM(RTRIM(isnull('Y',''))) +
LTRIM(RTRIM(isnull('',''))))
-- is the same of
LTRIM(RTRIM(isnull('9',''))) +
LTRIM(RTRIM(isnull('X',''))) +
LTRIM(RTRIM(isnull('Y',''))) +
LTRIM(RTRIM(isnull('',''))) +
LTRIM(RTRIM(isnull('',''))))
-- that is the same of
'9XY'
因为没有不同的标准:
LTRIM(RTRIM(ISNULL('9',''))) +
LTRIM(RTRIM(isnull('X',''))) +
LTRIM(RTRIM(isnull('',''))) +
LTRIM(RTRIM(isnull('Y',''))) +
LTRIM(RTRIM(isnull('',''))))
-- is the same of
LTRIM(RTRIM(isnull('9',''))) +
LTRIM(RTRIM(isnull('X',''))) +
LTRIM(RTRIM(isnull('Y',''))) +
LTRIM(RTRIM(isnull('',''))) +
LTRIM(RTRIM(isnull('',''))))
-- that is the same of
'9XY'
@csetzkorn-如果你需要区分空列,也许你应该使用某种分隔符。是的,谢谢Damien_,不信的人,这就是我要做的do@csetzkorn-所以如果你需要区分空列,也许你应该使用某种分隔符。是的,谢谢Damien_,不信的人,这就是我要做的关于这个愚蠢的问题-无法删除,因为有答案。对于这个愚蠢的问题,很抱歉-无法删除,因为有答案。