假设有一个包含 2 列的表“A”- ID (INT)、DATA (VARCHAR(100))。 在表格中执行“SELECT DATA FROM A”结果如下:
DATA
---------------------
Nowshak 7,485 m
Maja e Korabit (Golem Korab) 2,764 m
Tahat 3,003 m
Morro de Moco 2,620 m
Cerro Aconcagua 6,960 m (located in the northwestern corner of the province of Mendoza)
Mount Kosciuszko 2,229 m
Grossglockner 3,798 m
// the DATA continues...
---------------------
如何在 SELECT SQL 查询中使用某种字符串处理函数仅提取数字数据,以便修改后的 SELECT 的结果如下所示:
DATA (in INTEGER - not varchar)
---------------------
7485
2764
3003
2620
6960
2229
3798
// the DATA in INTEGER continues...
---------------------
顺便说一下,如果这可以在单个 SQL 语句中完成,那将是最好的。 (我使用的是 IBM DB2 9.5 版)
谢谢:)
最佳答案
我知道这个线程很旧,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> )
例如
DATA = 'Sample by John'
TRANSLATE(DATA, 'XYZ', 'abc')
=> a becomes X, b becomes Y, c becomes Z
=> 'SXmple Yy John'
** 注意:我无法谈论性能或版本兼容性。我使用的是 DB2 的 9.x 版本,并且是这项技术的新手。希望这对某人有帮助。
关于sql - 如何从 SQL 结果中提取数值数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/596166/