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

SQL - remove all letters (alpha characters) from a string

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

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

在:'AB-123-CD% -> Out: '-123-%'

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

'simple' 答案是每个字母有 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' 与第二个参数相同的长度。