cs0815
cs0815

Reputation: 17418

hash several strings tsql

I am trying to create a unique hash like this:

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))

Unfortunately, I end up with the same hash despite different strings. Any ideas why?

PS:

This solves the above 'issue':

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))

Upvotes: 1

Views: 53

Answers (1)

dani herrera
dani herrera

Reputation: 51705

Because there are not different strigns:

    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'

Upvotes: 5

Related Questions