mssql object_id 인자의 (N'~')의 의 0 1 666

by 김혜니 [SQLServer] [2019.06.19 19:09:53]


안녕하세요. 아래와같이 OBJECT_ID를 통해 테이블이 생성되어있는지 여부를 확인할 때,

앞에 N이라는 옵션(?)을 추가하는것은 무슨 의미인지 알고싶습니다.

도움말을 봐도 잘 모르겠네요..ㅠ_ㅠ

 

IF OBJECT_ID(N'DBA.dbo.TestTable2') IS NOT NULL
 BEGIN
  DROP TABLE DBA.dbo.TestTable2
END

by 르매 [2019.06.20 01:00:50]

N은 문자열 상수가 유니코드라는 것을 명시적으로 나타냅니다. 즉.. 문자열의 유형이 varchar가 아닌 nvarchar라는 걸 나타내는거죠.

실제로 MS-SQL에서 오브젝트의 이름은 sysname 이라는 데이터 유형을 사용하는데, sysname은 nvarchar(128) 과 동의어입니다. 따라서 객체의 이름을 문자열 상수와 비교할 때는 문자열을 감싼 인용 부호 앞에 N을 붙여서 데이터 유형을 서로 일치 시켜줍니다.

선택한 collation에 따라 N을 붙이는게 꼭 필요할 수도 있고 아닐 수도 있는데, 평소에 varchar와 nvarchar를 구분하고 그에 따른 N의 용법을 습관 들여 놓는 것이 좋다고 봅니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입