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

标签 sql sql-server sql-server-2008 casting

我正在运行 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/

相关文章:

c# - 运行 SQL 命令并返回消息

sql-server - TADOStoredProc 返回记录集或输出参数的值(不是两者)

sql - 在 MS SQL Server 数据库中存储未知数据类型

sql - 在 SQL Server 中插入时忽略重复键

mysql - 将表连接到自身?您能否建议一个最快的查询来获取这些结果?

sql - 如何在 Android 中使用列表适配器显示矩阵光标?

sql - 如何在Sql Server中通过Exec命令运行两条T-Sql语句?

c# - Entity Framework GroupBy到Sql生成

SQL - 将表传递给 Select 中的 UDF

SQL:删除所有嵌套的自引用记录