Pod*_*ays 14 sql t-sql sql-server
我有一个包含字符和数字的列
12
13
14
19K/YR
22
Run Code Online (Sandbox Code Playgroud)
所以列类型是varchar.但是后来我也在用这个列进行一些计算,所以我试图将数据转换成float,如果它是数字的话.
这给了我一个错误:
SELECT CASE ISNUMERIC(QTY)
WHEN 1 THEN CAST(QTY AS float)
ELSE QTY
END AS test
Run Code Online (Sandbox Code Playgroud)
Mik*_*son 31
您不能转换为浮动并将字符串保留在同一列中.当isnumeric返回0时,你可以这样做以获得null.
SELECT CASE ISNUMERIC(QTY) WHEN 1 THEN CAST(QTY AS float) ELSE null END
Run Code Online (Sandbox Code Playgroud)
gbn*_*gbn 11
..延长Mikaels的答案
SELECT
CASE WHEN ISNUMERIC(QTY + 'e0') = 1 THEN CAST(QTY AS float) ELSE null END AS MyFloat
CASE WHEN ISNUMERIC(QTY + 'e0') = 0 THEN QTY ELSE null END AS MyVarchar
FROM
...
Run Code Online (Sandbox Code Playgroud)
e0修复一些ISNUMERIC 问题(例如+ - .接受空字符串)