从字符串中删除所有字母(字母字符)

问题描述 投票:0回答:1

我正在尝试编写一个函数,从字符串中删除 26 个字母中任何一个的出现。

输入:'AA123A' -> 输出:'123'

输入:'AB-123-CD% -> 输出:'-123-%'

我在谷歌上能找到的就是如何删除非数字字符,这些字符似乎都是围绕定义你想要保留的数字而形成的。但我也想保留任何符号。

“简单”的答案是每个字母 26 个嵌套 REPLACE,但我不敢相信没有更好的方法来做到这一点。 我可以定义一个 A-Z 字符串并循环遍历每个字符,调用 REPLACE 26 次 - 使代码更简单,但功能相同。

有人有一个优雅的解决方案吗?

sql sql-server replace alphanumeric
1个回答
1
投票

如果我理解正确,你可以使用 TRANSLATE,例如:

SELECT REPLACE(TRANSLATE('AB-123-  CDdcba%', 'ABCDabcd','        '), ' ', '');
SELECT REPLACE(TRANSLATE('AB-123-  CDdcba%', 'ABCDabcd','AAAAAAAA'), 'A', '');
  • 第一个案例修剪也有空格,
  • 第二个,保留现有空间。

只需将其余字符添加到

'ABCDabcd'
参数中,并保持
'AAAAAAAA'
与第二个参数相同的长度。

© www.soinside.com 2019 - 2024. All rights reserved.