如何在SQL中的列中使用NULL将varchar格式转换为整数格式



我有一个varchar(255(格式的列。该列有数值和NULL值。我需要将列转换为整数格式,但由于NULL值,它失败了。我在网上查过,这个问题在很多地方都有提及。但我似乎找不到正确的解决方案。该解决方案必须在Microsoft SQL server环境中运行。

我试过这个:

CAST(varcharname AS INT) AS varname

CAST(CASE WHEN varcharname IS NOT NULL THEN varcharname ELSE NULL END AS INT) AS varname

CAST(NULLIF(varcharname , '') AS INT) AS varname

CAST(NULLIF(varcharname , NULL) AS INT) AS varname

问题不在于零值,我可以证明这一点:

https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=c6734d0967eae022b0af2ee3a2b694db

列中更有可能有其他内容无法进行转换。也许是一些空白?请记住,空字符串与NULL不同,只有空格的字符串与空字符串也不同。

试试这个:

cast(nullif(rtrim(varcharname),'') as int)

需要考虑的另一件事是,如果列中有更多数据,并且您使用WHERE子句限制结果。

例如,假设您有以下数据:

idvarcharname
1'1'
2
3'3'
4'4'
5'Five'

相关内容

  • 没有找到相关文章

最新更新