To_Char 和 T_Number 在 SQL Server 中交替用于格式化
Posted
技术标签:
【中文标题】To_Char 和 T_Number 在 SQL Server 中交替用于格式化【英文标题】:To_Char and T_Number alternate in SQL Server for formatting 【发布时间】:2014-03-18 12:22:59 【问题描述】:什么是 SQL Server 的替代
To_CHAR([Column_Name], -987654321)
To_Number([Column_Name],'999999999D99999900')
? 还, 我可以从语法中预测的是它们都被用于格式化。那么它们有什么区别呢?
【问题讨论】:
【参考方案1】:Casting 在 Sql Server 中是这样完成的:
CAST([column] AS CHAR([required length]))
CAST([column] AS [whatever numeric type you want])
之后您可以使用FORMAT
函数如果您使用的是 Sql Server 2012 或更高版本。
FORMAT([value], [format])
在你的情况下,我会试试这个:
FORMAT(CAST([column] AS CHAR([required length])), '-987654321')
FORMAT(CAST([column] AS [whatever numeric type you want]), '000000000.000000##')
虽然我不太明白你在这里的格式化策略是什么,尤其是对于你的CHAR
铸造... :)
在 Sql Server 2012 之前,格式化值是尴尬的,充其量是。好消息是,如果您了解一些 C#,您可以将强大的 .NET Framework 格式化机制公开为映射到 assembly running on SQLCLR 的 Sql User Defined Function。从那里你可以很容易地制作一个等效的 SQL2012 FORMAT 函数。这适用于 Sql Server 2005 和 2008。
【讨论】:
我认为我不能在 SQL Server 中使用 CAST([Column] AS Char(-987654321))。 @Zerotoinfinite 确实你不能。 SQL Server 中的强制转换和格式化没有结合在一起。以上是关于To_Char 和 T_Number 在 SQL Server 中交替用于格式化的主要内容,如果未能解决你的问题,请参考以下文章
如果 TO_CHAR(SYSDATE,'DD')='01' 在 SQL 中截断整个表
在 PL/SQL 中不使用 TO_CHAR 将整数连接到字符串
oracle sql TO_CHAR 函数在某些情况下添加尾随空白