我需要创建一个查询,根据每个字符的数据类型将现有列中的字符更改为新列。例如,如果它是一个字母,将它改为'L‘。如果它是一个数字,将它更改为'N‘,如果它是一个特殊的字符,将它更改为'S’。下面是我想要输出的更清晰的例子:
ColumnA ColumnB
abcdefg LLLLLLL
12345 NNNNN
abc123 LLLNNN
a1b2z8 LNLNLN
yre!£456 LLLSSNNN
!??? SSSS还有几点要补充:
对不起,如果这没有意义,任何问题,我会尽量让它更清楚。提前谢谢。
发布于 2020-06-30 11:40:30
你可以做自己的功能:
CREATE FUNCTION [dbo].[GetPattern]
(
@input NVARCHAR(2000)
)
RETURNS NVARCHAR(2000)
AS
BEGIN
DECLARE @ResultVar NVARCHAR(2000) = '';
DECLARE @i INT = 0, @Len INT, @c NCHAR(1);
SELECT @Len = LEN(@input);
WHILE (@i < @Len)
BEGIN
SET @i = @i + 1;
SELECT @c = SUBSTRING(@input, @i, 1);
IF @c BETWEEN 'a' AND 'z' BEGIN SET @ResultVar = @ResultVar + 'L' END
ELSE IF @c BETWEEN 'A' AND 'Z' BEGIN SET @ResultVar = @ResultVar + 'L' END
ELSE IF @c BETWEEN '0' AND '9' BEGIN SET @ResultVar = @ResultVar + 'N' END
ELSE BEGIN SET @ResultVar = @ResultVar + 'S' END;
END
RETURN @ResultVar
END接下来你就用它:
SELECT ColumnA, [dbo].[GetPattern](ColumnA) AS ColumnB FROM MyTablehttps://stackoverflow.com/questions/62655952
复制相似问题