首页 > 解决方案 > 如何转换为 varchar?

问题描述

我需要输出为 varchar 并且数字保存为 1 或 1.5 .... 但现在我的数字保存为 1.00000。我无法更改表格的设计,此字段可以是字符串或数字

所以,我尝试通过以下方式进行转换:

SELECT CAST( ISNULL( TRY_CAST( a.field AS FLOAT) , 'NAME') AS VARCHAR(MAX)) FROM #TABLEA a

我的想法是,如果它是一个数字,那么它将转换为浮点数,否则它将用'NAME'替换它

但是我得到错误:如果我用数字替换“名称”,则“将数据类型 varchar 转换为浮点数时出错”将不会出现错误。

有人对这个问题有任何想法吗?谢谢 !

标签: sqlsql-servertype-conversion

解决方案


检查这个:

ISNULL:返回与 check_expression 相同的类型。

你正在尝试使用两种不同的类型。我建议使用 COALESCE,但是您会遇到同样的问题,因为它返回具有最高数据类型优先级的表达式的数据类型,而 FLOAT 是数据类型优先级中的上 VARCHAR 。所以,我的两分钱将用于这样的事情:

#If you can cast it, then use that field. Use "Name" otherwise.
SELECT (CASE WHEN TRY_CAST(a.field AS FLOAT) IS NOT NULL  
             THEN a.field ELSE 'NAME'
        END) 
FROM #TABLEA a;

推荐阅读