본문 바로가기

프로그래밍/MSSQL

[MSSQL] QUOTENAME 구분 식별자

반응형

 

 

 

 

 

QUOTENAME

 

입력 문자열이 유효한 SQL Server 구분 식별자가 되도록 구분 기호가 추가된 유니코드 문자열을 반환한다.

 

 

문자열을 대괄호, 따옴표, 괄호 등으로 묶어주려할 때 사용하는 함수이다.

 

QUOTENAME(문자열, [구분자])

 

SELECT QUOTENAME('abc')
SELECT QUOTENAME('abc','''')
SELECT QUOTENAME('abc', '()')

 

결과

 

 

 

 

실전 예제

 

1. 동적 쿼리문에서 테이블명 혹은 컬럼명을 대괄호로 묶어줘야 하는 경우

 

(ex. 테이블명 혹은 컬럼명에 띄어쓰기가 들어간 경우, 숫자로 시작하는 경우 등등)

 

DECLARE @columnName NVARCHAR(255) = 'item details'
DECLARE @tableName NVARCHAR(100) = '3rd_store'

-- 에러 발생
--DECLARE @query NVARCHAR(MAX) = 'SELECT ' + @columnName + ' FROM ' + @tableName

-- 정상 실행
DECLARE @query NVARCHAR(MAX) = 'SELECT ' + QUOTENAME(@columnName) + ' FROM ' + QUOTENAME(@tableName)

EXEC sp_executesql @query

 

결과

 

 

 

 

 

2. 동적 쿼리문에서 별칭(ALIAS)에 대괄호가 필요한 경우

 

(ex. 별칭에 띄어쓰기 혹은 "와 같은 특수문자가 들어가는 경우)

 

DECLARE @alias NVARCHAR(255) = '"details"'

DECLARE @query1 NVARCHAR(MAX) = 'SELECT [item details] AS ' + @alias + ' FROM [3rd_store]'
DECLARE @query2 NVARCHAR(MAX) = 'SELECT [item details] AS ' + QUOTENAME(@alias) + ' FROM [3rd_store]'

EXEC sp_executesql @query1
EXEC sp_executesql @query2

 

 

 

 

 

 

반응형