SQL:如果field为空,则返回空字符串,否则转换为数字

Kal*_*son 2 sql sql-server casting sql-server-2008

我正在运行SQL Server 2008(否则我会使用Try_Parse)并且我需要在非空的情况下将字段转换为数字.如果该字段为空,则应返回空字符串或NULL.我更喜欢该字段是作为数字存储在数据库中,但我目前无法控制它.

这是我尝试过的:

SELECT CASE WHEN AccountNumber='' THEN '' ELSE CAST(AccountNumber AS bigint) END AS AccountNumber FROM Accounts

要么

SELECT CASE WHEN CAST(AccountNumber AS bigint)=0 THEN '' ELSE CAST(AccountNumber AS bigint) END AS AccountNumber FROM Accounts

但是这两个都为空帐号带来了0.我觉得这应该是可能的,但我会疯狂地试图解决它!谢谢!

mel*_*okb 6

您不能同时在同一列中选择数字和空字符串,因为它们是不兼容的类型.这就是为什么空字符串会自动转换为0.然而,NULL应该可以工作.

SELECT CASE WHEN AccountNumber='' OR AccountNumber IS NULL THEN NULL
  ELSE CAST(AccountNumber AS bigint) END AS AccountNumber
FROM Accounts
Run Code Online (Sandbox Code Playgroud)