T-SQL 캐스트와 변환
언제 를 사용해야 하는지에 대한 일반적인 지침은 무엇입니까?CAST
대CONVERT
둘 중 하나를 선택할 때와 다른 하나를 선택할 때 성능 문제가 있습니까?하나는 ANSI-SQL에 가깝습니까?
CONVERT
SQL Server 고유,CAST
ANSI 입니다.
CONVERT
날짜 형식을 지정할 수 있다는 점에서 더 유연합니다.그 외에는 거의 비슷합니다.확장 기능에 관심이 없는 경우CAST
.
편집:
다음 코멘트에서 @beruic 및 @C-F에서 알 수 있듯이 암묵적인 변환(CAST 또는 CONVERT를 사용하지 않는 변환)을 사용하면 정밀도가 저하될 수 있습니다.자세한 내용은 CAST 및 CONVERT, 특히 이 그래픽: SQL Server 데이터 유형 변환 차트를 참조하십시오.이 추가 정보를 통해 원래의 조언은 그대로 유지됩니다.가능한 경우 CAST를 사용합니다.
변환에는 날짜에서 문자열로 변환하기 위한 스타일 매개 변수가 있습니다.
http://msdn.microsoft.com/en-us/library/ms187928.aspx
위의copied by Shakti 답변을 자세히 말씀드리면, 저는 실제로 두 기능의 성능 차이를 측정할 수 있었습니다.
이 질문에 대한 솔루션의 다양한 성능을 테스트하는 중 표준 편차와 최대 실행 시간이 더 큰 것을 발견했습니다.CAST
.
*유형의 정밀도에 따라 1/300초 단위로 반올림한 시간(밀리초 단위)
CAST는 표준 SQL이지만 CONVERT는 T-SQL 방언 전용입니다.datetime의 경우 변환에는 약간의 이점이 있습니다.
CAST에서는 식과 타깃유형을 나타냅니다.CONVERT에서는 변환 스타일을 나타내는 세 번째 인수가 있습니다.이 인수는 문자열과 날짜 및 시간 값 사이의 변환 등 일부 변환에서 지원됩니다.예를 들어 CONVERT(DATE, '1/2/2012', 101)는 미국 표준을 나타내는 스타일 101을 사용하여 리터럴 문자열을 DATE로 변환합니다.
아직 아무도 주목하지 못한 것은 가독성입니다.가지고 있는 것...
CONVERT(SomeType,
SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
)
…보다 이해하기 쉬울지도 모른다…
CAST(SomeReallyLongExpression
+ ThatMayEvenSpan
+ MultipleLines
AS SomeType
)
CAST는 ANSI 표준을 사용합니다.휴대성의 경우, 이것은 다른 플랫폼에서도 동작합니다.CONVERT는 SQL Server 전용입니다.하지만 매우 강력한 기능입니다.날짜에 대해 다른 스타일을 지정할 수 있습니다.
이 때 ㄴ, ㄴ는다는 하지 않는 이 좋습니다.CAST
이치노 CAST(HASHBYTES('...') AS VARCHAR(32))
않다CONVERT(VARCHAR(32), HASHBYTES('...'), 2)
마지막 매개 변수가 없으면 결과는 동일하지만 읽을 수 없는 텍스트가 됩니다.할 수 .CAST
.
언급URL : https://stackoverflow.com/questions/707335/t-sql-cast-versus-convert
'programing' 카테고리의 다른 글
SQL Server - 여기서 "sys" 입니다.기능?" (0) | 2023.04.12 |
---|---|
SQL Server 데이터베이스의 모든 테이블을 삭제하는 방법 (0) | 2023.04.07 |
대용량 MS SQL .sql 파일을 Import하려면 어떻게 해야 합니까? (0) | 2023.04.07 |
SQL Server에서 외부 키를 드롭하려면 어떻게 해야 합니까? (0) | 2023.04.07 |
SSMS 2008의 "Edit Top 200 Rows"에서 SQL을 변경하는 방법 (0) | 2023.04.07 |