2013-07-03 61 views
2

我有一个表名Article。它有一列,类型的浮点数。我想将此字段强制转换为nvarchar,并且还要完成8个字符。我尝试了很多东西,但不起作用。我需要你的帮助。浮动铸造用约束最大尺寸为nvarchar

ArticleNo 
11536 ---> 00011536 
28508 ---> 00028508 
285082 ---> 00285082 
28508111 --> 28508111 
28508111 --> 28508111 
+0

小数点怎么样?这毕竟是浮点数 – gbn

+0

什么SQL Server版本? –

+0

@Panagiotis Kanavos,Ms-Sql Server 2008 – ozkank

回答

2
SELECT 
    REPLACE(STR(MyFloatColumn, 8, 0), ' ', '0') 
FROM 
    MyTable; 
+1

在SQL Server 2012中,您可以使用FORMAT函数来实现完整的.NET字符串格式 –

0

检查STR。你需要像SELECT STR([Column_Name],8,0)

你还可以用像select cast(cast(cast([Column_Name] as float) as int) as nvarchar(50))

0

你可以尝试:

SELECT REPLICATE('0', 8 - LEN(ArticleNo)) + CAST(ArticleNo AS NVARCHAR(8)) 
+0

小数点呢? – gbn

+1

这将失败并出现算术溢出错误28508111 –

1

这是格式化,而不是转换的问题。 2012年之前的SQL Server版本在字符串格式设置上很差。 gbn's解决方案可能是最容易使用的。最好在客户端或报表工具上进行字符串格式设置。

SQL Server 2012中增加了FORMAT功能,acceps一个.NET格式字符串。下面的语句返回使用这两种技术格式化的字符串,尽管FORMAT功能更强大:

SELECT ArticleNo, 
     REPLACE(str(ArticleNo ,8,0),' ','0'), 
     FORMAT(ArticleNo,'00000000') 
FROM testtable