我有一个困扰我的问题。当varchar值包含字母表时,如何将varchar转换为数字。
对于我的varchar price列值:
14dollars10cents
15dollars20cents
通过将其转换为varchar到number price列,值应为:
1410
1520
我知道如果varchar不包含任何字母,它可以通过“
自动转换SELECT CONVERT(INT, PRICE) FROM Table
有没有办法摆脱中间的字母,因为我想对它做数学函数。
更新了定点号码的尝试:
SELECT CAST (Replace(REPLACE(PRICE, 'dollars', '.'),'cents','') AS Number(4,2)))
FROM TEST;
由于
答案 0 :(得分:3)
您可以使用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;
...瞧
答案 1 :(得分:2)
SELECT CAST(REPLACE(YourVarcharCol, 'dollars', '') AS INT) FROM Table
这个问题是,如果varchar仍然包含字母数字字符,它将会中断。
答案 2 :(得分:0)
如何使用translate
删除不需要的字符。
SELECT TO_NUMBER(TRANSLATE('14dollars10cents','1234567890dolarscents','1234567890')) FROM DUAL
答案 3 :(得分:-2)
不,我不认为有直接的方法。 你可以进行字符串解析来获得整数值。