[SQL] NVARCHAR 선언에서 생략 크기의 효과는 무엇인가
SQLNVARCHAR 선언에서 생략 크기의 효과는 무엇인가
처럼, 내 SP에서 매개 변수를 선언 할 때 나는 보통 크기를 정의 :
@myParam nvarchar(size)
아니면 캐스팅 또는 변환 할 때 :
CAST(@myParam AS nvarchar(size))
최근에 나는 내 CAST 기능 등으로 크기를 제거했습니다 :
CAST(@myParam AS nvarchar)
그 와서 적어도 :-( 예상 할 때 나에게 물린 것 경우 재귀 CTE를 사용하여 크기를 지정하지 않고 NVARCHAR를 캐스팅 할 때 내가 NVARCHAR 변수에 절단을 발견 이후 나는 조금 걱정하고있다.
다른하실 말씀 있나요?
해결법
-
==============================
1.당신이 크기를 생략 할 경우, 30 페이지에 기본값이 :
당신이 크기를 생략 할 경우, 30 페이지에 기본값이 :
http://msdn.microsoft.com/en-us/library/ms186939.aspx
행동이를 보려면 다음 문을 실행하십시오 :
--outputs: 12345678901234567890.098765432 select cast (12345678901234567890.098765432 as nvarchar) --throws "Arithmetic overflow error converting expression to data type nvarchar." select cast (12345678901234567890.0987654321 as nvarchar) --outputs: 12345678901234567890.0987654321 select cast (12345678901234567890.0987654321 as nvarchar(31))
@ krul의 코멘트 당; 30 CAST의 기본 길이; 그러나 데이터 정의 또는 변수 선언의 기본 길이는 1입니다.
NB : 기본 길이가 10 인에 대한 문자열에 숫자 필드를 변환하는 STR 기능도 있습니다.
--outputs: 1234567890 select str(1234567890) --outputs: ********** select str(12345678901) --outputs: 12345678901 select str(12345678901,11)
-
==============================
2.그것은 기본 크기로 크기를 설정하고 나머지를 자릅니다. 이것은 참으로 가능성이 기본 크기가 적합하지 않는 한, 당신을 물어 올 것이다.
그것은 기본 크기로 크기를 설정하고 나머지를 자릅니다. 이것은 참으로 가능성이 기본 크기가 적합하지 않는 한, 당신을 물어 올 것이다.
이벤트는, 당신은 항상 당신이 크기가 대신 NVARCHAR의 기본 크기가 무엇인지 물어 SO에 와서이 코드에 읽는 다음 사람을 필요없이 될 것입니다 무슨 생각을 명확하게하기 위해 크기를 지정 제안) .
from https://stackoverflow.com/questions/1131499/what-is-the-effect-of-omitting-size-in-nvarchar-declaration by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL의 IN 술어 작동합니까? (0) | 2020.07.12 |
---|---|
[SQL] 봄 부팅 - 저장소 필드를 찾을 수 없습니다 '의 EntityManagerFactory'라는 이름의 빈을 요구 (0) | 2020.07.12 |
[SQL] 나는 SQL의 숫자를 인용해야 하는가? (0) | 2020.07.12 |
[SQL] 참조 테이블에 기본 또는 후보 키가 없습니다 (0) | 2020.07.12 |
[SQL] 고유 키와 같은 메이크업 텍스트 열 (0) | 2020.07.12 |