2012-08-16 9 views
0

숫자가없는 곳에 두 가지 예외가 있지만 기본 형식이 일반적으로 $$$$#####$$ 인 데이터 테이블이 있습니다. 고유 한 기본 키를 생성 할 수 있도록 키의 번호 부분을 추출한 다음 사용하고 싶습니다.nvarchar 값을 데이터 유형 int로 변환 할 때 변환하지 못했습니다.

따라서 숫자 값만 표시하는 열을 포함하고 숫자로 변환 할 수없는 항목은 무시한보기를 만들었습니다. 내가보기에서 특정 항목을 선택 쿼리를 작성하는 경우

나는 데이터 형식 INT에 NVARCHAR 값을 변환 할 때

변환이 실패 얻을.

그리고 나는보기에서 예외를 특별히 무시했지만 여전히 참조되는 것처럼 보입니다.

도움이된다면 크게 도움이 될 것입니다.

매트

+3

SQL Server가 쿼리에보기를 인라인하고 INT에 캐스팅 필터 이전에 발생하도록 쿼리의 구성 요소를 다시 정렬 할 수 있습니다이 도움이됩니다. 이 문제를 해결할 수있는 유일한 방법은 CASE 문을 사용하는 것입니다 (SQL Server 2012를 사용하는 경우에는 TRY_CONVERT를 사용하십시오). –

+0

여기에서 더 자세히 설명했습니다. [link] (http://stackoverflow.com/questions/5191701/tsql-divide-by-zero-encountered-despite-no-columns-containing-0) – mattbloke

답변

0

나는 키의 숫자 부분 만 잘라서 그 때 내가 고유 한 기본 키를 생성 할 수 있습니다 사용하고 싶습니다.

사용 Fastest way to remove non-numeric characters from a VARCHAR in SQL Server이 :

CREATE Function [fnRemoveNonNumericCharacters](@strText VARCHAR(1000)) 
RETURNS VARCHAR(1000) 
AS 
BEGIN 
    WHILE PATINDEX('%[^0-9]%', @strText) > 0 
    BEGIN 
     SET @strText = STUFF(@strText, PATINDEX('%[^0-9]%', @strText), 1, '') 
    END 
    RETURN @strText 
END 

함수에 열 값을 전달하고 정수로 캐스팅. 이 함수를 적용한 후 열 값에 숫자 값이 들어 있는지 여부를 확인하는 다른 함수를 작성할 수 있습니다.

또 다른 Reference.

희망

관련 문제