Этот метод работает, только если у вас есть 3 символа в качестве образца
DECLARE @T TABLE
(
V1 VARCHAR(10),
V2 VARCHAR(10)
);
INSERT INTO @T VALUES
('123', '312'),
('671', '176'),
('123', '341');
SELECT CASE WHEN
REPLACE(
REPLACE(
REPLACE(V1, SUBSTRING(V2, 1, 1), ''),
SUBSTRING(V2, 2, 1), ''
),
SUBSTRING(V2, 3, 1), ''
) = '' THEN 'SAME' ELSE 'NOT SAME' END Result
FROM @T;
Возвращает:
+----------+
| Result |
+----------+
| SAME |
| SAME |
| NOT SAME |
+----------+
Или путем создания функции, подобной
CREATE FUNCTION IsSame
(
@FStr VARCHAR(100), @SStr VARCHAR(100)
)
RETURNS VARCHAR(8)
AS
BEGIN
DECLARE @I INT = 1;
DECLARE @R VARCHAR(8) = 'NOT SAME';
IF LEN(@FStr) <> LEN(@SStr)
GOTO NotSame
ELSE
BEGIN
WHILE @I <= LEN(@SStr)
BEGIN
SET @FStr = (SELECT REPLACE(@FStr, SUBSTRING(@SStr, @I, 1), ''));
SET @I = @I + 1;
END
END
IF @FStr = ''
SET @R = 'SAME';
NotSame:
RETURN @R;
END
GO
Тогда вы можете использовать его как
SELECT dbo.IsSame('123', '312');