사용자 정의 함수를 사용하여 ID에서 숫자 부분을 추출한 다음 나머지 부분은 매우 사소합니다.
CREATE FUNCTION ExtractInteger(@String VARCHAR(2000))
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @Count INT
DECLARE @IntNumbers VARCHAR(1000)
SET @Count = 0
SET @IntNumbers = ''
WHILE @Count <= LEN(@String)
BEGIN
IF SUBSTRING(@String,@Count,1) >= '0'
AND SUBSTRING(@String,@Count,1) <= '9'
BEGIN
SET @IntNumbers = @IntNumbers + SUBSTRING(@String,@Count,1)
END
SET @Count = @Count + 1
END
RETURN @IntNumbers
END
그리고 비교,이 같은 :
SELECT * from TABLE1
JOIN TABLE2
on dbo.ExtractInteger(TABLE1.ID) = dbo.ExtractInteger(Table2.ID)
테이블이 매우 큰 경우,이 비싼 될 것입니다 여기에
일을 할 수있는 기능입니다 질문!
자릿수가 독립적 인 의미를 갖고 있다는 사실은 필드가 부적절하게 설계되었음을 나타냅니다. 이것을 제어 할 수는 없지만 그렇게 할 수 있다면이 필드를 최소한 두 개의 개별 필드 (및 세 개의 필드)로 분할해야합니다. –