我有一个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字段转换为十进制,当然还有可转换字段.
什么样的SQL语句可以做到这一点?
如何理解转换时哪个值会引发错误?
PS:我认为这可以解决 WHERE VALUE LIKE '[a-z]'但是如何添加更多像[ - +()]这样的过滤器?
导入工具将每个列作为 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
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)