데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
알려주신데로 변환방법 이용했는데
select * from 테이블명 where cast(유니코드컬럼명 as nvarchar) = '철인3종'
select * from 테이블명 where 유니코드컬럼명 = cast(N'철인3종' as varbinary)
결과값이 안 나옵니다. ^^;;
참고로 두 데이터가 들어있는 정보입니다.
- Name 컬럼 : varchar(16) 이고 데이터 값은 철인3종
- NameInUnicode컬럼 : varchar(70)이고 데이터 값은 0xa0cc78c7330085c80000 입니다.
좋은 하루 되시고, 한수 부탁드립니다. ( _ _ )
Comment 3
-
catchv
2013.01.18 11:16
-
건우아빠
2013.01.18 13:47
저장된 테이블에 형이 varchar로 되어 있습니다.
보이는건 varbinary 같지만 실제 저장된값은 문자입니다.
그래서 varbinary형변환해서 으로 검색하시면 일치하지 않기 때문에 검색이 되지 않습니다.
테이블의 형을 varbinary로 변경하셔야 하구요.. 기존 값을 그대로 놓고 형변환을 하시면 값은 전혀 다른 값으로 저장 되기 때문에
name을 varbinary형변환해서 update를 하신 다음 하시면 원하는 결과를 얻으실듯 합니다.
-
구본헌
2013.01.18 15:57
맨 마지막 쿼리는 안 나오네요~^^;;;
바쁘신데 정말 감사드립니다. 잘 이해 했습니다.
어느 누군가 인지 모르지만 디비 설계한 사람을 탓하며....ㅋㅋ
좋은 하루 되세요~^^
CREATE TABLE #t_test
(
Name varchar(16)
, NameInUnicode varchar(70)
)
GO
INSERT INTO #t_test(Name, NameInUnicode)
VALUES('철인3종', '0xa0cc78c7330085c8')
SELECT * FROM #t_test WHERE Name = '철인3종'
SELECT * FROM #t_test WHERE Name = CAST(N'철인3종' AS VARCHAR(100))
SELECT * FROM #t_test WHERE NameInUnicode = '0xa0cc78c7330085c8'
SELECT * FROM #t_test WHERE NameInUnicode = CONVERT(VARCHAR(100), CAST(N'철인3종' AS varbinary(100)), 1)