【问题标题】:To_Char and T_Number alternate in SQL Server for formattingTo_Char 和 T_Number 在 SQL Server 中交替用于格式化
【发布时间】:2014-03-18 12:22:59
【问题描述】:

什么是 SQL Server 的替代

To_CHAR([Column_Name], -987654321)

To_Number([Column_Name],'999999999D99999900')

? 还, 我可以从语法中预测的是它们都被用于格式化。那么它们有什么区别呢?

【问题讨论】:

    标签: sql-server oracle casting formatting to-char


    【解决方案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 中的强制转换和格式化没有结合在一起。
    猜你喜欢
    • 2017-09-24
    • 2010-11-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2010-09-28
    • 2015-12-20
    相关资源
    最近更新 更多