t-sql 中模仿 int.ToString("D4"); 的高效算法

Posted

技术标签:

【中文标题】t-sql 中模仿 int.ToString("D4"); 的高效算法【英文标题】:Efficient algorithm in t-sql to mimic int.ToString("D4"); 【发布时间】:2010-02-04 14:20:04 【问题描述】:
int i=99;
string s=i.ToString("D4");
//s=="0099"

请就文本格式中数字前零的有效实施提出建议。

【问题讨论】:

不是不能,而是你确定一定要格式化数据库中的数据吗? SQL Server 针对管理数据进行了优化,而不是对其进行格式化。 这是我将域中的逻辑移动到 db 中的罕见情况之一,因为在我的域中执行此操作需要 ado.net 事务和几个 db 请求才能正确生成数字。牺牲纯度换取性能。 【参考方案1】:

通常我会做某事:

RIGHT('0000' + [col], 4)

【讨论】:

【参考方案2】:

你可以使用下面定义的函数

选择 dbo.fsPadLeft(@i,'0',4)

或内联语句 从y中选择replicate(x,4-Len(x))+x

Create Function [dbo].[fsPadLeft](@var varchar(200),@padChar char(1)='0',@len int)
returns varchar(300)
as
Begin

return replicate(@PadChar,@len-Len(@var))+@var

end

【讨论】:

以上是关于t-sql 中模仿 int.ToString("D4"); 的高效算法的主要内容,如果未能解决你的问题,请参考以下文章

T-SQL 抛出异常

c# 中int.ToString()的格式化的示例

在java中String的方法:toString()怎么用?

stark组件之批量操作模仿Django的admin

C#中ToString()格式详解

在 LINQ 中进行字符串比较的问题