SQL Server:将 varchar 转换为数字时出错

时间:2021-03-02 13:40:53

标签: sql sql-server

我使用的是 SQL Server Management Studio 18。

这是我的代码

select * 
from Table
where convert(numeric, ["신규가입자수"] ) > 100

列(신규사입자수)的内容是数字,数据类型是varchar(50),如下所示。

<头>
“日期”(varchar) "신규사입자수" (varchar)
“2018-07-18” “2194”
“2018-07-17” “2123”

我认为这是非常简单的代码,但它不起作用。

他们中没有一个不仅转换数字,还转换 int、float 等。

即使当我尝试导入 csv 文件并将该列设置为数字时,它也无法导入为数字,只有在变为 varchar 时才能成功导入。

我不知道是什么问题。

1 个答案:

答案 0 :(得分:0)

如果你想要结果集中的转换值,那么你需要选择它:

select t.*,
       convert(numeric, t.["신규가입자수"] ) as converted_value
from Table t
where convert(numeric, ["신규가입자수"] ) > 100;

如果出现错误,请改用 try_convert()

select t.*,
       try_convert(numeric, t.["신규가입자수"] ) as converted_value
from Table t
where try_convert(numeric, ["신규가입자수"] ) > 100;

如果问题是双引号,则删除它们:

select t.*,
       try_convert(numeric, replace(t.["신규가입자수"], '"', '') ) as converted_value
from Table t
where try_convert(numeric, replace(["신규가입자수"], '"', '') ) > 100;
相关问题