2014-03-12 2 views
0

그래서 두 테이블 test1과 test2가 있습니다. 두 테이블 모두에 id, type, number 열이 있습니다. 테이블에없는 test1의 모든 번호를 선택하려고합니다. test2, 나는 이것이 효과가있을 것이라는 것을 안다;테이블에 있지만 영숫자 데이터로 된 필드를 선택하십시오.

다음
test1.number 
MFP773773 
**MFP874747** 
MFP099290 
MFP763636 

test2.number 
HBM366363 
**HBM874747** 
HBM773383 
HBM092827 

, 어떻게 바로 그 같은 일을 할 수 있지만 : 그것은 내가 번호 열이 완전히 숫자 때 무엇을 찾고 있었다 반환하지만 새 테이블에 새 번호 등이있다 될 일이

SELECT test1.number,test2.number 
FROM test1 LEFT JOIN test2 ON test1.number=test2.number 
WHERE test2.number is null; 

번호가 같은 두 번째 행처럼 숫자가 아닌 "숫자"부분 만 있지만 글자는 숫자가 아닌 다른 숫자를 반환합니다.

대단히 감사합니다.

+0

두 테이블을 모두 coulmns의 숫자와 비교하고 싶습니까 ?? 귀하의 질문에 두 번째 행을 언급 어디에 숫자가 동일하지만 글자되지 않습니다, 당신은 그게 무슨 뜻 가치를 보여 주시겠습니까 ?? –

+0

항상 3 자입니까? – Szymon

답변

0

다음은 숫자를 추출 할 수있는 사용자 정의 함수입니다. 그것을 밖으로 시도하고 볼 수 있습니다.

CREATE FUNCTION dbo.udf_GetNumeric 
    (@strAlphaNumeric VARCHAR(256)) 
    RETURNS VARCHAR(256) 
    AS 
    BEGIN 
    DECLARE @intAlpha INT 
    SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric) 
    BEGIN 
    WHILE @intAlpha > 0 
    BEGIN 
    SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '') 
    SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric) 
    END 
    END 
    RETURN ISNULL(@strAlphaNumeric,0) 
    END 
    GO 

/* Run the UDF with different test values */ 
SELECT dbo.udf_GetNumeric('') AS 'EmptyString'; 
SELECT dbo.udf_GetNumeric('[email protected]@@') AS '[email protected]@@'; 
SELECT dbo.udf_GetNumeric('123456') AS '123456'; 
SELECT dbo.udf_GetNumeric('asdf') AS 'asdf'; 
SELECT dbo.udf_GetNumeric(NULL) AS 'NULL'; 
GO