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"); 的高效算法的主要内容,如果未能解决你的问题,请参考以下文章