我正在运行 SQL Server 2008(否则我会使用 Try_Parse)并且我需要将字段转换为数字以防它不为空。如果字段为空,则应返回空字符串或 NULL。我更愿意将该字段作为数字存储在数据库中,但此时我无法控制它。
这是我尝试过的:
SELECT CASE WHEN AccountNumber='' THEN '' ELSE CAST(AccountNumber AS bigint) END AS AccountNumber 来自账户
或
SELECT CASE WHEN CAST(AccountNumber AS bigint)=0 THEN '' ELSE CAST(AccountNumber AS bigint) END AS AccountNumber FROM Accounts
但是这两个都为空帐号带回 0。我觉得这应该是可能的,但我正在疯狂地试图弄明白!谢谢!
最佳答案
您不能在同一列中同时选择数字和空字符串,因为它们是不兼容的类型。这就是空字符串自动转换为 0 的原因。但是,NULL 应该可以工作。
SELECT CASE WHEN AccountNumber='' OR AccountNumber IS NULL THEN NULL
ELSE CAST(AccountNumber AS bigint) END AS AccountNumber
FROM Accounts
关于SQL:如果字段为空,则返回空字符串,否则转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36728882/