【问题标题】:Similar function in SQL Server to string.format in c#SQL Server 中与 c# 中的 string.format 类似的功能
【发布时间】:2014-11-27 21:31:25
【问题描述】:

在 C# 中,如果我这样做:

string code = string.format("C{0:000}", 7);

结果将是:C007

SQL Server 中是否有执行相同操作的函数?还是我必须自己创建一个函数?

【问题讨论】:

  • 为什么不在 c# 端进行格式化
  • 如果您正在寻找精确匹配,CLR UDF 可能是您的最佳选择。
  • 是时候更新了。不在 SQL 2005 中,但 2014 有一个与 C# 极其相似的格式函数。
  • SQL Server 2012 及更新版本具有FORMAT 函数.....

标签: c# sql sql-server tsql sql-server-2005


【解决方案1】:

在直接的 TSQL 中,没有什么比 C# string.format 更强大了。 CONVERT() 函数提供了一些有限的格式,但对于它无法处理的任何内容,您都必须编写自己的函数。谷歌“SQL 字符串函数”以查看您的 SQL 库中有哪些工具。

【讨论】:

  • 或者,首先不要在数据库中执行这种格式化。
【解决方案2】:

使用 FORMATMESSAGE() 函数。

SELECT FORMATMESSAGE('This is the %s and this is the %s.', 'first variable', 'second variable') AS Result; 

https://msdn.microsoft.com/en-us/library/ms186788.aspx

【讨论】:

    【解决方案3】:

    我会使用REPLICATE,结合RIGHT

    'C' + RIGHT(REPLICATE('0', <Padding Amount Here>) + CAST(7 AS NVARCHAR(10)), <Padding Amount Here>)
    

    用法:

    'C' + RIGHT(REPLICATE('0', 10) + CAST(7 AS NVARCHAR(10)), 10)
    

    产生以下内容:

    C0000000007

    【讨论】:

    • 增加长度 + 切换到 NVARCHAR
    【解决方案4】:

    SELECT 'C' + RIGHT('00' + CONVERT(varchar(3),7),3)

    【讨论】:

      猜你喜欢
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2010-11-13
      • 1970-01-01
      相关资源
      最近更新 更多