我正在尝试编写一个函数,从字符串中删除 26 个字母中任何一个的出现。
输入:'AA123A' -> 输出:'123'
输入:'AB-123-CD% -> 输出:'-123-%'
我在谷歌上能找到的就是如何删除非数字字符,这些字符似乎都是围绕定义你想要保留的数字而形成的。但我也想保留任何符号。
“简单”的答案是每个字母 26 个嵌套 REPLACE,但我不敢相信没有更好的方法来做到这一点。 我可以定义一个 A-Z 字符串并循环遍历每个字符,调用 REPLACE 26 次 - 使代码更简单,但功能相同。
有人有一个优雅的解决方案吗?
如果我理解正确,你可以使用 TRANSLATE,例如:
SELECT REPLACE(TRANSLATE('AB-123- CDdcba%', 'ABCDabcd',' '), ' ', '');
SELECT REPLACE(TRANSLATE('AB-123- CDdcba%', 'ABCDabcd','AAAAAAAA'), 'A', '');
只需将其余字符添加到
'ABCDabcd'
参数中,并保持 'AAAAAAAA'
与第二个参数相同的长度。