가 주어 캐스트 :T-SQL 결정적 INT는
- SQL 서버
- 표는
TEST_TABLE
에서TEST_TABLE
- 열 유형의
TEST_FIELD
라고 불리는VARCHAR(50) NOT NULL
- 행 1 : 10YR3/6
- 행 2 : 10YR3/2
- 쿼리 :
SELECT TEST_FIELD FROM TEST_TABLE WHERE ...
질문 :에서
내 어디 상태 나 문자열의 마지막 문자에 값을 테스트해야합니다. 나는 Where 절에서 다음과 같은 행동을한다. 경우 1
RIGHT(TEST_FIELD,1) > 3
CAST(RIGHT(TEST_FIELD,1) AS INT) > 3
그들이 어떤 추론 캐스트를 통해 동일한 행동을하고 있습니까? 사례 1이 결정적입니까?
미리 감사드립니다.
매트
당신은 예를 들어 값을 확인하면 변환이 이루어집니다
제 경우에는 값 자체에 고유 한 여러 값이 있습니다. 10YR3/6. 10, 3, 6을 사용하지 않을 것입니다. 1036? 또는 3 또는 6 대신 10을 악화시킬 수 있습니까? 그 행동에 확신 할 수 없으므로 내 질문을 계속 염두에 두십시오. –
@MattAkers - 값을 각각 10, 3, 6으로 파싱 할 수 있다면 괜찮습니다. 그렇게 할 수 없다면 텍스트와 정수 데이터 유형을 비교하면 예외가 발생합니다. 10YR3/6을 말 (100)과 비교할 수 없습니다. 연산을 수행하는 방법을 알지 못하며 Right() 또는 Left()와는 아무런 관련이 없습니다. 비교와 비교할 때 전환과 더 관련이 있습니다 수행. 이게 말이 돼? – JonH
그건 완벽하게 이해가됩니다. 나는 당신의 예와 의견에 완전히 동의한다. 내 질문에 대한 비교 변환이 통과/실패하는 이유는 다음과 같습니다. 1과 2 절이 동일하게 수행되는 이유는 무엇이며 1이 블랙 박스에서 캐스트를 수행하는 것처럼 보이는 경우 실제로 처리해야합니까? 그리고 절 1은 결정 론적 인 행동을합니까? –