如何为浮点数据类型列分配字符串值

时间:2019-05-09 07:02:08

标签: sql sql-server

我在存储的proc中有一列数据类型为Float的列。如果该列在DB中没有数据,那么我必须分配'-'并返回结果。

我曾这样尝试过,但是却得到了“将数据类型varchar转换为浮动”。

 ISNULL(ABCColumn, '--') as ABCColumn.

此处ABCColumn为浮动数据类型。有办法吗?

3 个答案:

答案 0 :(得分:0)

g.input :salutation, input_html: { value: 'mr' }

使用CTE仅用于生成一些伪数据; Num列将转换为字符串(以与“-”数据类型对齐); ISNULL应用于相同类型的数据

答案 1 :(得分:0)

在这里,您只需输入

ISNULL(ABCColumn, '0') as ABCColumn.

您可以在前端进行验证。 如果ABCColumn0,则表示您可以放置​​任何内容。

否则

使用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