SQL Server에서는 WHERE 절 조회조건과 같이 데이터 형식이 다른 두 식을 결합하여 사용하는 경우 

데이터 형식 우선순위에 따라 암시적 형변환이 적용됩니다.

데이터 형식을 명시적으로 일치시키도록 쿼리를 작성하면 인덱스를 효율적으로 액세스할 수 있습니다.

 

<예제 쿼리>

DELCARE 입사일자 NCHAR(8)

-- CASE1 --
/* 조회조건이 INT형이므로 NCHAR형으로 암시적 형변환 */
SELECT * FROM Employee WHERE 입사일자 = 20210426 

-- CASE2 --
SELECT * FROM Employee WHERE 입사일자 = '20210426'

-- CASE3 --
SELECT * FROM Employee WHERE 입사일자 = CONVERT(NCHAR(8), '20210426')

 

SQL Server에서는 데이터 형식에 다음 우선 순위를 사용합니다.

암시적 형변환은 우선순위가 낮은 데이터 형식이 우선순위가 높은 데이터 형식으로 변환됩니다.

 1. 사용자 정의 데이터 형식(가장 높음)
 2. sql_variant
 3. xml
 4. datetimeoffset
 5. datetime2
 6. datetime
 7. smalldatetime
 8. date
 9. time
10. float
11. real
12. decimal
13. money
14. smallmoney
15. bigint
16. int
17. smallint
18. tinyint
19. bit
20. ntext
21. text
22. image
23. timestamp
24. uniqueidentifier
25. nvarchar(nvarchar(max) 포함)
26. nchar
27. varchar (varchar(max) 포함)
28. char
29. varbinary (varbinary(max) 포함)
30. binary(가장 낮음)

읽어주셔서 감사합니다.

 

참고사이트

docs.microsoft.com/ko-kr/sql/t-sql/data-types/data-type-precedence-transact-sql?view=sql-server-ver15

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기