2013-12-23 2 views
1

insert control characters in nvarchar or varchar from SQL script? 후속 :차이로

아래 SQL 스크립트의 0X 접두사 진수 정수 및 소수 사람의 차이점은 무엇입니까?

0x 접두어가 붙은 정수가 전달되지 않는 것처럼 보입니다. 나는 그렇게 가르치 려하시기 바랍니다, 아마 다른 대만족 순간이 저녁에있어 (:가)이 문을 생성하기 쉬웠다 있도록

select 
    char(0x64) charx64, 
    char(0100) char100, 
    nchar(0x64) ncharx64, 
    nchar(0100) nchar100, 
    char(0x6564) charx6564, 
    char(025956) char25956, 
    nchar(0x6564) ncharx6564, 
    nchar(025956) nchar25956, 
    0x64 x64, 
    0100 d100, 
    0x6564 x6564, 
    025956 d25956, 
    cast(0x64 as varchar) x64varchar, 
    cast(0100 as varchar) d100varchar, 
    cast(0x6564 as varchar) x6564varchar, 
    cast(025956 as varchar) d25956varchar, 
    cast(0x64 as nvarchar) x64nvarchar, 
    cast(0100 as nvarchar) d100nvarchar, 
    cast(0x6564 as nvarchar) x6564nvarchar, 
    cast(025956 as nvarchar) d25956nvarchar, 
    null 
; 

합니다 (null

결과 :

C:\bin>"C:\Program Files\Microsoft SQL Server\110\Tools\Binn\SQLCMD.EXE" -S .\SQLEXPRESS -E -i hex-versus-decimal.sql 
charx64 char100 ncharx64 nchar100 charx6564 char25956 ncharx6564 nchar25956 x64 d100  x6564 d25956  x64varchar      d100varchar     x6564varchar     d25956varchar     x64nvarchar     d100nvarchar     x6564nvarchar     d25956nvarchar        
------- ------- -------- -------- --------- --------- ---------- ---------- ---- ----------- ------ ----------- ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ ----------- 
d  d  d  d  NULL  NULL  ?   ?   0x64   100 0x6564  25956 d        100       ed        25956       d        100       ?        25956         NULL 

(1 rows affected) 

답변

2

MS SQL 서버의 경우 0x 상수는 binary and varbinary types의 정수가 아니고 binary literals입니다. char()nvarchar()을 호출하면 정수로 변환됩니다 (big-endian int 인 것처럼). eger 표현, 내가 정확하게 기억한다면). varchar/nvarchar로 변환하면 ANSI 또는 UCS2로 인코딩 된 텍스트의 바이트로 해석됩니다.

+0

저는 FoxPro가 아니라 여기에 SQL Server를 말하고 있습니다.하지만 내가 부분적으로 따라갈 수 있다고 생각합니다. 다른 사람들도 도움을 얻을 수 있도록 답을 기입하십시오. –

+0

@ JeroenWiertPluimers 고마워, 고정 (나는 잘못된 링크를 올렸지 만 SQL Server의 상황은 비슷합니다). –

+0

고마워요. 이런 식으로 varbinary와 binary를 지원하면 정수 데이터 유형을 지원하는 것보다 훨씬 더 많은 의미가 있습니다. 엔디안 및 8 비트 또는 16 비트 코드 페이지에 대한 모든 포인터가 사용됩니까? 없을지라도 : +1; 받아 들였다. –

관련 문제