Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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 将字符串转换为货币值_Sql_Oracle - Fatal编程技术网

Sql 将字符串转换为货币值

Sql 将字符串转换为货币值,sql,oracle,Sql,Oracle,我正在使用Oracle SQL。我有一列的值为Stringtype,实际上应该是一种货币 字符串值的格式如下: 103,2 % 我需要将其转换为: 103.2 Aldo我需要将值类型转换为Float 有没有好的对话功能可以帮我?我需要用Replace()函数来完成吗?像这样的东西怎么样 select cast(translate(col, ', %', '.') as float) 像这样的怎么样 select cast(translate(col, ', %', '.') as floa

我正在使用Oracle SQL。我有一列的值为
String
type,实际上应该是一种货币

字符串值的格式如下:

103,2 %
我需要将其转换为:

103.2
Aldo我需要将值类型转换为
Float


有没有好的对话功能可以帮我?我需要用
Replace()
函数来完成吗?

像这样的东西怎么样

select cast(translate(col, ', %', '.') as float)

像这样的怎么样

select cast(translate(col, ', %', '.') as float)

像这样的怎么样

select cast(translate(col, ', %', '.') as float)

像这样的怎么样

select cast(translate(col, ', %', '.') as float)

您可以使用
replace
剥离固定
%
零件,该零件已将
103,2%
更改为
103,2
;并将结果传递到
到\u number()
。由于数据库中的值和句点中似乎有逗号-小数分隔符,因此可以指定NLS\u数字\u字符:

select to_number(replace('103,2 %', ' %'),
  '999999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as value
from dual;

     VALUE
----------
     103.2 
如果您没有固定的格式-例如,空格可能在那里,也可能不在那里,或者您可以使用不同的货币符号,而不是-,那么您可以使用Gordon Linoff所示的
translate
,或者使用正则表达式删除任何非数字字符:

select to_number(regexp_replace('103,2 %', '[^[:digit:],]'),
  '999999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as value
from dual;

您可以使用
replace
剥离固定
%
零件,该零件已将
103,2%
更改为
103,2
;并将结果传递到
到\u number()
。由于数据库中的值和句点中似乎有逗号-小数分隔符,因此可以指定NLS\u数字\u字符:

select to_number(replace('103,2 %', ' %'),
  '999999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as value
from dual;

     VALUE
----------
     103.2 
如果您没有固定的格式-例如,空格可能在那里,也可能不在那里,或者您可以使用不同的货币符号,而不是-,那么您可以使用Gordon Linoff所示的
translate
,或者使用正则表达式删除任何非数字字符:

select to_number(regexp_replace('103,2 %', '[^[:digit:],]'),
  '999999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as value
from dual;

您可以使用
replace
剥离固定
%
零件,该零件已将
103,2%
更改为
103,2
;并将结果传递到
到\u number()
。由于数据库中的值和句点中似乎有逗号-小数分隔符,因此可以指定NLS\u数字\u字符:

select to_number(replace('103,2 %', ' %'),
  '999999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as value
from dual;

     VALUE
----------
     103.2 
如果您没有固定的格式-例如,空格可能在那里,也可能不在那里,或者您可以使用不同的货币符号,而不是-,那么您可以使用Gordon Linoff所示的
translate
,或者使用正则表达式删除任何非数字字符:

select to_number(regexp_replace('103,2 %', '[^[:digit:],]'),
  '999999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as value
from dual;

您可以使用
replace
剥离固定
%
零件,该零件已将
103,2%
更改为
103,2
;并将结果传递到
到\u number()
。由于数据库中的值和句点中似乎有逗号-小数分隔符,因此可以指定NLS\u数字\u字符:

select to_number(replace('103,2 %', ' %'),
  '999999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as value
from dual;

     VALUE
----------
     103.2 
如果您没有固定的格式-例如,空格可能在那里,也可能不在那里,或者您可以使用不同的货币符号,而不是-,那么您可以使用Gordon Linoff所示的
translate
,或者使用正则表达式删除任何非数字字符:

select to_number(regexp_replace('103,2 %', '[^[:digit:],]'),
  '999999D99', 'NLS_NUMERIC_CHARACTERS='',.''') as value
from dual;

您可以使用
CAST(字符串为十进制)
CAST(字符串为有符号整数)
将字符串转换为数值,方法是使用
CAST(字符串为十进制)
CAST(字符串为有符号整数)

您可以使用
转换(字符串为十进制)
转换(字符串为有符号整数)
将字符串转换为数值,方法是使用
转换(字符串为十进制)
转换(字符串为有符号整数)

%
文字字符,还是将其用作任何货币符号的通配符?
%
是文字字符,还是将其用作任何货币符号的通配符?
%
是文字字符,还是将其用作任何货币符号的通配符?
%
是文字字符,或者你用它作为任何货币符号的通配符?谢谢。我想那一刻就足够了。谢谢。我想那一刻就足够了。谢谢。我想那一刻就足够了。谢谢。我想那一刻就足够了。谢谢你的解释!谢谢你的解释!谢谢你的解释!谢谢你的解释!空格和
%
(无论是文字还是通配符)将导致ORA-01722的强制转换失败;OP希望答案是浮点数,而不是整数。空格和
%
(无论是文字还是通配符)将使ORA-01722的转换失败;OP希望答案是浮点数,而不是整数。空格和
%
(无论是文字还是通配符)将使ORA-01722的转换失败;OP希望答案是浮点数,而不是整数。空格和
%
(无论是文字还是通配符)将使ORA-01722的转换失败;OP希望答案是浮点数,而不是整数。