相关疑难解决方法(0)

如何确定SQL Server中无法转换为(decimal,float,int)的字段值

我有一个SQL Server数据库.

一个字段具有类似的值

 ID      VALUE
  1      NEGATIF
  2      11.4
  3      0.2
  4      A RH(+)
  5      -----
  6      >>>>>
  7      5.6<
  8      -13.9
Run Code Online (Sandbox Code Playgroud)

我想将CONVERT VALUE字段转换为十进制,当然还有可转换字段.

  1. 什么样的SQL语句可以做到这一点?

  2. 如何理解转换时哪个值会引发错误?

PS:我认为这可以解决 WHERE VALUE LIKE '[a-z]'但是如何添加更多像[ - +()]这样的过滤器?

t-sql sql-server casting

15
推荐指数
1
解决办法
3万
查看次数

SQL 将 varchar 列转换为 float

导入工具将每个列作为 varchar(max) 放入多个表中,我正在寻找将列转换为正确类型的最快方法。

这工作正常,

ALTER TABLE dbo.myTable ALTER COLUMN myColumn INT
Run Code Online (Sandbox Code Playgroud)

但这惨败了

ALTER TABLE dbo.myTable ALTER COLUMN myColumn FLOAT
Run Code Online (Sandbox Code Playgroud)

出现错误:消息 8114,级别 16,状态 5,第 26 行将数据类型 varchar 转换为 float 时出错。

如何执行从 VarChar(max) 类型到 Float 类型的通用列转换?


我在这些帖子中找到了一些提示,但我无法将其转换:

如果 ISNUMERIC 将 varchar 转换为 float

转换数据类型 varchar 时出错

将 varchar 转换为 float 时出错

select case isnumeric([myColumn]) when 1 then cast([myColumn] as float) else null end
from dbo.myTable
Run Code Online (Sandbox Code Playgroud)

SELECT TOP (100) CAST(CASE WHEN IsNumeric([myColumn]) = 1 THEN [myColumn] ELSE NULL END AS float) AS …
Run Code Online (Sandbox Code Playgroud)

sql varchar type-conversion

5
推荐指数
1
解决办法
4万
查看次数

标签 统计

casting ×1

sql ×1

sql-server ×1

t-sql ×1

type-conversion ×1

varchar ×1