Вы можете использовать пользовательскую функцию для извлечения числовой части из идентификатора, а затем все остальное довольно тривиально.
Вот функция для выполнения работы:
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)
Если таблицы очень большие, то это будет дорогой запрос!