我知道这个线程已经很旧了,并且OP不需要答案,但我必须通过这个线程和其他线程的一些提示来解决这个问题。他们似乎都缺少确切的答案。
执行此操作的简单方法是TRANSLATE
将所有不需要的字符转换为单个字符,然后REPLACE
带有空字符串的单个字符。
DATA = 'Nowshak 7,485 m'
# removes all characters, leaving only numbers
REPLACE(TRANSLATE(TRIM(DATA), '_____________________________________________________________________________________________', ' abcdefghijklmnopqrstuvwzyaABCDEFGHIJKLMNOPQRSTUVWXYZ`~!@#$%^&*()-_=+\|[]{};:",.<>/?'), '_', '')
=> '7485'
为了打破TRANSLATE
命令:
TRANSLATE( FIELD or String, <to characters>, <from characters> )
e.g.
DATA = 'Sample by John'
TRANSLATE(DATA, 'XYZ', 'abc')
=> a becomes X, b becomes Y, c becomes Z
=> 'SXmple Yy John'
** 注意:我无法谈论性能或版本兼容性。我使用的是 9.x 版本的 DB2,并且是该技术的新手。希望这对某人有帮助。