Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql varchar到数字的转换_Sql_Oracle_Select_Insert - Fatal编程技术网

Sql varchar到数字的转换

Sql varchar到数字的转换,sql,oracle,select,insert,Sql,Oracle,Select,Insert,我有个问题困扰着我。当varchar值由字母组成时,如何将varchar转换为数字 对于我的varchar price列值: 14dollars10cents 15dollars20cents 通过将其转换为varchar to number price列,值应为: 1410 1520 我知道如果varchar不包含任何字母表,它可以通过“ 有没有办法去掉中间的字母,因为我想在上面做数学函数。 更新了将固定点数放入的尝试: SELECT CAST (Replace(REPLACE(PRICE

我有个问题困扰着我。当varchar值由字母组成时,如何将varchar转换为数字

对于我的varchar price列值:

14dollars10cents
15dollars20cents
通过将其转换为varchar to number price列,值应为:

1410
1520
我知道如果varchar不包含任何字母表,它可以通过“

有没有办法去掉中间的字母,因为我想在上面做数学函数。

更新了将固定点数放入的尝试:

SELECT CAST (Replace(REPLACE(PRICE, 'dollars', '.'),'cents','') AS Number(4,2))) 
FROM TEST;

谢谢

不,我认为没有直接的方法。 您可以进行字符串解析以获取整数值

SELECT CAST(REPLACE(YourVarcharCol, 'dollars', '') AS INT) FROM Table

问题是,如果varchar仍然包含字母数字字符,它将中断。

您可以使用
REGEXP\u REPLACE
删除所有非数字字符:

SELECT REGEXP_REPLACE(price, '[^[:digit:]]')
  FROM table;
SELECT TO_NUMBER(TRANSLATE('14dollars10cents','1234567890dolarscents','1234567890')) FROM DUAL
然后将其转换为数字:

SELECT TO_NUMBER(REGEXP_REPLACE(price, '[^[:digit:]]'))
  FROM table;
如果要在中添加点,也可以使用
REGEXP\u 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

位置是否固定?然后子字符串操作将起作用。否则,将使用正则表达式删除所有非数字。请在Hi中检查位置是否固定。dinup提供的解决方案不会作为formatfixedpoint仅适用于某些字符串。使用REGEXP_REPLACE,您可以在一条SQL语句中完成所需的所有操作。我会留下一个答案来说明如何进行。你能给出一个示例,说明如何通过字符串解析来获取任何整数值吗?ThanksCheck:有一个问题,由于管理员权限,我无法创建函数。还有其他方法吗?好的,我已经从给定的解决方案中测试了。它会给我一个无效数字的错误。当我选择强制转换(替换)时(price,'dollars,'cents')作为testI中的数字,我已经更新了我当前的解决方案。是否可以使用case 3值?因为我的表数据包含空值…如果您尝试使用'cents'更改'dollars',首先您需要使用'try SELECT CAST'更改'dollars'(替换(YourVarcharCol,'dollars',''),'cents','')作为INT)从TableUnderstand。这是另一个问题。如果我想将其更改为定点数字(4,2)。替换后是否可能?您可以尝试使用您想要的任何类型…我实际上没有测试过任何类型,所以我不确定:)