2013-12-11 4 views
1

동적으로 생성 된 테이블에서 작동하는 동적 SQL SP가 있습니다. 열 [RATE] 유형 Float 인 것이SQL Server Float 데이터 유형 동작

SELECT * FROM [DYNAMIC_TABLE] WHERE [RATE] BETWEEN '0.0' AND '10.0' 

주 : 이것은 동적 SP

특정 쿼리 같이 주어진다 생성한다.

열이 Int 인 동적으로 생성 된 다른 테이블에 대해 동일한 쿼리가 실패합니다. 나는 이것이 매개 변수 주위의 작은 따옴표로 인한 것임을 이해합니다.

이 동작의 차이점은 무엇입니까?

답변

1

데이터 형식을 일치 시키려면 암시 ​​적 변환을 수행해야합니다. 이것은 모든 약

type precedencefloat 열를 들어, 우리는 데이터 유형을 floatvarchar을 가지고있다. float가 이기고 '0.0''10.0'float 초로 변환하고 성공합니다.

int 열에는 intvarchar 데이터 유형이 있습니다. int이 이기고 '0.0''10.0'int 초로 변환하려고 시도합니다.

따옴표없이 int 열에 대해서는 intdecimal 데이터 유형이 있습니다. decimal이 이기고 int 열 값을 decimal으로 변환하고 성공합니다.

0

변환하려고/

에 대한

을 int로 값 '0.0'및 '10 .0 '캐스팅 [속도]를위한

SELECT * FROM [DYNAMIC_TABLE] WHERE [RATE] BETWEEN '0.0' AND '10.0' 

플로트이다 비율은]

SELECT * FROM [DYNAMIC_TABLE] WHERE [RATE] BETWEEN convert(int, '0.0') AND convert(int, '10.0')' 

지능

입니다 또는

SELECT * FROM [DYNAMIC_TABLE] WHERE convert(float, [RATE]) BETWEEN '0.0' AND '10.0' 
+0

귀하의 수정 사항이지만 위의 답변은 다음과 같습니다. 그것. –