2012-10-31 4 views
-1

내 테이블 testuidpwd가 있습니다varbinary 값을 nvarchar 데이터 유형에 저장 하시겠습니까?

사용자 :

Uid Password Passwordhash 
----------------------------------------  
121 wrwrwr 0x0013531FA845AEA1E840BDE787336ED3CAEDFE6E 
122 etetxw 0x79BAEFD23C2F4D146F9BD2FDF6C14CA25AC5D6AA 
  • uidchar 데이터 유형
  • passwordnvarchar(100) 데이터 유형
  • passwordhashnvarchar(100) 데이터 유형
0 나는 열에 기능을 hashbytes('SHA1',password)

update testdb.dbo.testuidpwd 
set pwdhash = HashBytes('SHA1', password) 

를 사용할 때

내 문제는 pwdhashnvarchar(100) 데이터 형식입니다.

나는 아래의 문장을

update testdb.dbo.testuidpwd 
set pwdhash=HashBytes('SHA1', password) 

을 실행

내가 같은 pwdhash 열을 가지고 硽 贕 ڷ ד 瘃 快 پ 寱 캏엞

는하지만 난 varbinary 형식을 저장할 형식의이 종류 .. .... pwdhash 열 예를 들어

에서 :

update testdb.dbo.testuidpwd 
set pwdhash = cast(hashbytes('SHA1', PWD) AS varbinary) 

이 성명은 또한 varbinary 열에서 이진 값을 저장하는 간단한 것

+1

'varbinary' 데이터를'varbinary' 데이터 유형 컬럼에 저장하십시오. 'nvarchar'는 바이너리 데이터에는 적합하지 않습니다. –

+0

varbinary를 문자열 데이터 형식으로 변환하는 것이 가능합니까 ??? –

+0

값을 base64로 인코딩 할 수 있습니다. – Laurence

답변

1

작동하지 않습니다.

SQL 2008 이상에서는 CONVERT 함수가 2 진 - 문자 변환에 대한 스타일 매개 변수를 추가합니다 (MSDN 페이지의 "바이너리 스타일"절 참조).

이 (SQL 이후 2008 또는에 한 당신이로) 작동합니다 : 당신은 최고의 0x

없이 값을 저장할의 당신은 2 대신 1에 스타일을 설정할 수 있습니다

update testdb.dbo.testuidpwd 
set pwdhash=CONVERT(NVARCHAR(100),HashBytes('SHA1', password),1) 

관련 문제