【问题标题】:SQL add text to numeric columnSQL将文本添加到数字列
【发布时间】:2019-01-07 17:07:24
【问题描述】:

我不确定这是否可行,但我有一个查询可以连接两个表并比较两个数据集,即当前月份与上个月。在我有新数据的地方,上一列会产生 Null。

我一直在尝试将 NULL 替换为文本“新帐户”。但是我知道我正在尝试将文本值强制转换为数字列。

所以我只是想知道这是否可能,因为我没有找到任何在线帮助。

提前致谢。

【问题讨论】:

  • 提示:COALESCE().
  • 在我看来,这听起来像是您应该在表示层中处理的事情。保留数据库中的数据类型,当您的应用程序收到值NULL 时,显示'New Account'
  • 请提供一个 DDL 示例,但是...无论如何,您无法将“新帐户”之类的文本与数字进行比较
  • 感谢 Gordon,我尝试了 COALESCE 并得到以下结果:将数据类型 varchar 转换为浮点数时出错。
  • 谢谢拉努,我确实想知道这是否是最好的选择,但我想看看是否有办法做到这一点。

标签: sql sql-server


【解决方案1】:

只是为了扩展 Gordon 和 Larnu 的 cmets。

不,您不能更新带有文本的数字列。但是,您可以更改该值的最终表示。

请注意,最终结果是字符串,而不是数值。

示例

Declare @YourTable table (SomeCol int)
Insert Into @YourTable values
 (25)
,(null)

Select SomeCol = coalesce(left(SomeCol,10),'New Account')
 From  @YourTable

退货

SomeCol
25
New Account

【讨论】:

  • Please note that the final result is a string and not a numeric value. 这是这里的关键,这意味着您不能在进一步的计算中使用这些数字。最好尽可能靠近表示层。
  • @Alejandro 同意 1,000%。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多