如何修复ISNULL功能

时间:2019-02-03 08:51:47

标签: sql

我有一张表,其中显示了所有名称和信用额度。

我必须使用isnull功能来显示(“待定”)

没有信用额度(空)的人。

当我尝试时,它给了我一个错误'Error converting data type varchar to numeric.'

select concat('Welcome back, ' + CustomerName, '.' , ' Your credit limit is: ', CreditLimit, isnull(CreditLimit,'('Pending'))) from [Sales].[Customers]

1 个答案:

答案 0 :(得分:3)

ISNULL将期望第二个属性具有与第一个相同的类型,并将尝试对其进行转换。由于CreditLimit是数字,因此数据库也会尝试将varchar /字符串'(Pending)'强制转换为数字,这将失败。

解决方案:将CreditLimit强制转换为字符串类型。毕竟,无论如何它都将成为句子的一部分,并且此时您不需要它作为数字。

强制转换可以像这样工作,但是它可能取决于您使用的数据库(未指定)。 STR至少适用于您查询的SQL Server。其他数据库可能会使用诸如CASTCONVERT之类的函数,这些函数较为通用,需要您指定类型。

ISNULL(STR(CreditLimit), '(Pending)')