2016-03-15 66 views
2

我正在寻找在Sybase SQL Anywhere 16中从ASCII文本中删除数字字符的最佳方法。是否有任何方法执行此操作时不会诉诸嵌套REPLACE()调用,循环等。?从Sybase SQL Anywhere中的字符串中删除数字16

实施例:

This 1.00 is 200 a test 333 string.变得This is a test string.

+0

参见[此帖]我改写的答案(http://stackoverflow.com/questions/36020273/正则表达式到匹配所有非数字字符 - 这-被-穿插与 - 数字/ 36020483#36020483)。它有一个Sybase文档的例子,它使用你提到的几个简单的问题。道歉,如果你已经看到了这一点。 – zdim

回答

0

作为ASE支持正则表达式:

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

这消除[十进制]数字与任选的前导空格。

+0

不幸的是,我没有使用ASE,也没有权限访问REGEXP_REPLACE()或任何启用了正则表达式的替换函数。 SQL Anywhere确实提供了REPLACE(str,find_str,replace_str)和REGEXP_SUBSTR(str,regex)。如果有一个正则表达式匹配所有字母数字字符,但不匹配十进制字符,我想我可以使它工作。 – telenachos

+0

@ldueck:对不起,我不认为有没有简单的方法可以在没有'REGEXP_REPLACE'的情况下做你想做的事情。 – dnoeth

0

如果您可以假设数字总是从字母单词分开,这应该工作:

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