简体   繁体   English

在T-SQL中,用一个字符替换字符串中的字母,用另一个字符替换数字

[英]Replace alphabets in a string with a character and number with another character in T-SQL

I have string like ' A9Tf6Uv54 ', Now I want replace it with ' xzxxzxxzz ' format. 我有类似“ A9Tf6Uv54 ”的字符串,现在我想将其替换为“ xzxxzxxzz ”格式。

In other words alphabetic characters are replaced with ' x ' and numbers with ' z '. 换句话说,字母字符被替换为“ x ”,数字被替换为“ z ”。

How can I replace both numeric and alphabets with different character in SQL? 如何在SQL中用不同的字符替换数字和字母?

You can do like this: 您可以这样:

DECLARE @StringText VARCHAR(20) =  'A9Tf6Uv54';
DECLARE @digitReplacement VARCHAR(20) =  'z';
DECLARE @letterReplacement VARCHAR(20) =  'x';

WHILE PATINDEX('%[^0-9'+@letterReplacement+']%',@StringText)>0
    SET @StringText = STUFF(@StringText,PATINDEX('%[^0-9'+@letterReplacement+']%',@StringText),1,@letterReplacement)
WHILE PATINDEX('%[0-9]%',@StringText)>0
    SET @StringText = STUFF(@StringText,PATINDEX('%[0-9]%',@StringText),1,@digitReplacement)


--RESULT
xzxxzxxzz

ifound bug and fix it -:) ifound错误并修复--)

declare @r int=1  --pointer to next letter in the string
declare @l int = (select len('A9Tf6Uv54'))
declare @str varchar(100)=''   -- init the new str
declare @x varchar(10)='x'  --replace number
declare @z varchar(10)='z'  --replace char
while @l!=0    --loop ending at the end of the original str
begin
if (ascii(substring('A9Tf6Uv54',@r,1)) between 48 and 57)

begin
set @str=ltrim(@str)+@z
set @l=@l-1
set @r=@r+1
end
else
begin
set @str=ltrim(@str)+@x
set @l=@l-1
set @r=@r+1
end
end
select @str

> >

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在 T-SQL 中删除字符串中的最后一个字符? - Remove the last character in a string in T-SQL? T-SQL从字符串中找到一个八个字符串,该字符串不包含空格并且至少包含一个数字,并将其排除在外 - T-SQL find an eight character string which contains no spaces and at least 1 number from within a string and exclude it 如何在oracle sql查询中替换除字母,数字和“连字符”之外的所有其他字符 - How to replace all other character except alphabets, number and “hyphen” in oracle sql query 字符串的每个字符上的T-SQL反向数据透视 - T-SQL Reverse Pivot on every character of a string T-SQL填充nvarchar数字,该数字具有9个字符的格式A00000012,该数字带有前导字符和零 - T-SQL Pad a nvarchar number with leading character and zeros for a 9 character format A00000012 T-SQL字符串替换 - T-SQL String Replace 在T-sql中递增字符值 - Incrementing Character value in T-sql SQL用序列号替换字符串中特定字符的出现 - SQL replace with serial number for the specific occurrence of a character in a string T-SQL查询替换XML数据类型列的一个xml节点值中的符号或字符? - T-SQL Query to replace a symbol or character in one xml node value of XML data type column? T-SQL字符串连接`'字符串'+ str(整数)`引入了额外的空格字符 - T-SQL string concatenation `'string' + str(integer)` introduces extra space character
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM