从Sybase SQL Anywhere 16中的字符串中删除数字

从Sybase SQL Anywhere 16中的字符串中删除数字,sql,regex,sybase,sqlanywhere,Sql,Regex,Sybase,Sqlanywhere,我正在寻找在Sybase SQL Anywhere 16中从ASCII文本中删除数字字符的最佳方法。是否有任何方法不借助嵌套的REPLACE()调用、循环等 例如: 这1.00是一个测试333字符串。变成这是一个测试字符串。因为ASE支持正则表达式: REGEXP_REPLACE(str, ' *[[:digit:]]+.?[[:digit:]]+', '') 这将删除带有可选前导空格的[decimal]数字。如果您可以假定数字总是与字母数字单词分开,那么这应该可以: SELECT LIST(

我正在寻找在Sybase SQL Anywhere 16中从ASCII文本中删除数字字符的最佳方法。是否有任何方法不借助嵌套的
REPLACE()
调用、循环等

例如:


这1.00是一个测试333字符串。
变成
这是一个测试字符串。

因为ASE支持正则表达式:

REGEXP_REPLACE(str, ' *[[:digit:]]+.?[[:digit:]]+', '')

这将删除带有可选前导空格的[decimal]数字。

如果您可以假定数字总是与字母数字单词分开,那么这应该可以:

SELECT LIST(REGEXP_SUBSTR(tst_string,'(^|[[:blank:]])[[:alpha:]]+', 1, n.row_num),'')
FROM sa_rowgenerator(1,length(tst_string)) n;

不幸的是,我没有使用ASE,也没有访问REGEXP_REPLACE()或任何启用regex的REPLACE函数的权限。SQLAnywhere确实提供了REPLACE(str,find_str,REPLACE_str)和REGEXP_SUBSTR(str,regex)。如果有一个正则表达式可以匹配所有字母数字字符,但不能匹配十进制字符,我想我可以让它工作。@ldueck:对不起,我认为没有
REGEXP\u REPLACE
,没有任何简单的方法可以做你想做的事情。请参阅上我重写的答案。它有一个来自Sybase docs的例子,在一个几乎相同的问题上使用了您提到的lookarounds。如果您已经看到了,请道歉。