将varchar转换为数字
问题描述:
我有一个困扰我的问题。如何在varchar值由字母组成的情况下将varchar转换为数字。将varchar转换为数字
对于我VARCHAR价格列值:
14dollars10cents
15dollars20cents
通过将其转换为VARCHAR到数价格列,其值应为:
1410
1520
我知道,如果将varchar不包括任何字母,它可以自动通过”转换
SELECT CONVERT(INT, PRICE) FROM Table
有没有办法摆脱的一个因为我想在它上面做数学函数,所以在中间的lphabets。
更新投入定点数的尝试:
SELECT CAST (Replace(REPLACE(PRICE, 'dollars', '.'),'cents','') AS Number(4,2)))
FROM TEST;
感谢
答
SELECT CAST(REPLACE(YourVarcharCol, 'dollars', '') AS INT) FROM Table
问题在于,如果varchar仍包含字母数字字符,它将中断。
答
你可以只使用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;
瞧...
答
如何使用translate
去除不需要的字符。
SELECT TO_NUMBER(TRANSLATE('14dollars10cents','1234567890dolarscents','1234567890')) FROM DUAL
是否修正了位置?然后,子串操作将起作用。否则,使用正则表达式来删除所有非数字。 – Thilo
请在http://delphi.about.com/od/objectpascalide/a/curr2words.htm中检查一次 –
您好位置不固定。 dinup提供的解决方案将不起作用,因为formatfixedpoint只对某些字符串可用。 – JLearner