我有一个困扰我的问题。当 varchar 值由字母组成时,如何将 varchar 转换为数字。
对于我的 varchar price 列值:
14dollars10cents
15dollars20cents
通过将其转换为 varchar 到数字价格列,值应为:
1410
1520
我知道如果 varchar 不包含任何字母,它可以通过“自动转换”
SELECT CONVERT(INT, PRICE) FROM Table
有什么办法可以去掉中间的字母,因为我想对它做数学函数。
更新将定点数放入的尝试:
SELECT CAST (Replace(REPLACE(PRICE, 'dollars', '.'),'cents','') AS Number(4,2)))
FROM TEST;
谢谢
最佳答案
您可以使用 REGEXP_REPLACE
删除所有非数字字符:
SELECT REGEXP_REPLACE(price, '[^[:digit:]]')
FROM table;
然后将其转换为数字:
SELECT TO_NUMBER(REGEXP_REPLACE(price, '[^[:digit:]]'))
FROM table;
如果你想添加点,那么你可以用
REGEXP_REPLACE
来做到这一点。也:SELECT TO_NUMBER(REGEXP_REPLACE(val, '^([0-9]*)([^[:digit:]]*)([0-9]*)(.*)$', '\1.\3'))
FROM table;
瞧...
关于sql - varchar 到数字的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8178727/