home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.databases.ms-sqlserver      Notorious Rube Goldberg contraption      19,505 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 19,074 of 19,505   
   Erland Sommarskog to Shelly   
   Re: Varbinary and nvarchar problem   
   19 Jun 14 23:06:57   
   
   From: esquel@sommarskog.se   
      
   Shelly (sheldonlg@thevillages.net) writes:   
   > I have a table with a field that is nvarchar.  The input data is   
   > obtained from first doing a HASHBYTES(MD5, the_char_string). Call this   
   > the_data.   
   >   
   > If I first do a CAST(the_data as NVARCHAR)  or if I do a   
   > CONVERT(NVARCHAR, the_data), then there is no problem with inserting the   
   > field.  However, when I do a select * via Sqlserver Manager, that field   
   > contains the string "??????".   
   >   
   > If I do not first do the conversion, it insert the hash into the field,   
   > and succeeds for the first 15 of 1991 records.  It then bombs with   
   > "incorrect syntax near '<9e>V!¢(Q Ã+;<86>"^@Lmç'.   
   >   
   > This process is interrogating a join of two tables and then is inserting   
   > a processing of the resulting data rows into another table.  It is on   
   > the insert (which is one condition of a merge statement) where the   
   > failure occurs.   
   >   
   > Does anyone have a suggestion on how I can get the data into the third   
   > table and not have it all be "???????".   
      
      
   It would help if you showed us the code. But given the syntax error it   
   sounds like you are building an SQL string from the value returned by   
   hashbytes, and of course that will fail as soon as the hash includes the   
   byte 0x27, that is a single quote. The odds for that *not* to happen in   
   2000 are very small.   
      
   But why are you building SQL strings from the values in the first place?   
   and why would you do it when you already have the data in SQL Server? Which   
   you seem to have since you run HASHBYTES() on it.   
      
   The question marks are due because your string literal is obviously   
   varchar; that is it is not prefixed by N. Then again, why would you   
   cast the hash value to nvarchar? It is a binary value, not a string.   
      
   If you really want to store it as a string, I would suggest that you   
   store it as a hex string in a varchar column but that will take up double   
   the space.   
      
   In summary: since I don't see the code, I can't say for sure exactly   
   what you are doing wrong, but judging from your narrative, there are   
   number of flaws.   
      
   --   
   Erland Sommarskog, Stockholm, esquel@sommarskog.se   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca