我有一张表,其中显示了所有名称和信用额度。
我必须使用isnull
功能来显示(“待定”)
没有信用额度(空)的人。
当我尝试时,它给了我一个错误'Error converting data type varchar to numeric.'
select concat('Welcome back, ' + CustomerName, '.' , ' Your credit limit is: ', CreditLimit, isnull(CreditLimit,'('Pending'))) from [Sales].[Customers]
答案 0 :(得分:3)
ISNULL将期望第二个属性具有与第一个相同的类型,并将尝试对其进行转换。由于CreditLimit是数字,因此数据库也会尝试将varchar /字符串'(Pending)'强制转换为数字,这将失败。
解决方案:将CreditLimit强制转换为字符串类型。毕竟,无论如何它都将成为句子的一部分,并且此时您不需要它作为数字。
强制转换可以像这样工作,但是它可能取决于您使用的数据库(未指定)。 STR
至少适用于您查询的SQL Server。其他数据库可能会使用诸如CAST
或CONVERT
之类的函数,这些函数较为通用,需要您指定类型。
ISNULL(STR(CreditLimit), '(Pending)')