我在存储的proc中有一列数据类型为Float的列。如果该列在DB中没有数据,那么我必须分配'-'并返回结果。
我曾这样尝试过,但是却得到了“将数据类型varchar转换为浮动”。
ISNULL(ABCColumn, '--') as ABCColumn.
此处ABCColumn为浮动数据类型。有办法吗?
答案 0 :(得分:0)
g.input :salutation, input_html: { value: 'mr' }
使用CTE仅用于生成一些伪数据; Num列将转换为字符串(以与“-”数据类型对齐); ISNULL应用于相同类型的数据
答案 1 :(得分:0)
在这里,您只需输入
ISNULL(ABCColumn, '0') as ABCColumn.
您可以在前端进行验证。
如果ABCColumn
是0
,则表示您可以放置任何内容。
否则
使用TRY_CAST
ISNULL(ABCColumn, TRY_CAST('--' AS DECIMAL)) as ABCColumn.
OR
ISNULL(CAST(@ABCColumn AS NVARCHAR), '--' ) as ABCColumn
答案 2 :(得分:0)
这是一个表达式:
ISNULL(ABCColumn, '--') as ABCColumn
它返回一个单一类型。但是什么类型的呢?它会因为一个值就是数字而返回数字吗?还是字符串?
在这种情况下,ISNULL()
返回一个浮点数,因为第一个参数是浮点数。
documentation中对规则进行了说明。
解决方案是确保两个值都是字符串。我还偏爱COALESCE()
(因为它是标准功能)。所以:
COALESCE(CAST(ABColumn as VARCHAR(255)), '--') as ABCColumn