为了账号安全,请及时绑定邮箱和手机立即绑定

最有效的T-SQL方式将左边的varchar填充到一定长度?

最有效的T-SQL方式将左边的varchar填充到一定长度?

收到一只叮咚 2019-08-16 15:37:49
最有效的T-SQL方式将左边的varchar填充到一定长度?相比之下说:REPLICATE(@padchar, @len - LEN(@str)) + @str
查看完整描述

3 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

无论您如何操作,这只是SQL的低效使用。

也许是这样的

right('XXXXXXXXXXXX'+ rtrim(@str), @n)

其中X是您的填充字符,@ n是结果字符串中的字符数(假设您需要填充,因为您正在处理固定长度)。

但正如我所说,你应该真的避免在你的数据库中这样做。


查看完整回答
反对 回复 2019-08-16
?
慕少森

TA贡献2019条经验 获得超9个赞

我知道这最初是在2008年被问到的,但是SQL Server 2012引入了一些新的功能.FORMAT功能简化了左边的填充。它还会为您执行转换:

declare @n as int = 2select FORMAT(@n, 'd10') as padWithZeros

更新:

我想自己测试FORMAT功能的实际效率。我很惊讶地发现,与AlexCuse的原始答案相比,效率并不是很好。虽然我发现FORMAT功能更清洁,但在执行时间方面效率不高。我使用的Tally表有64,000条记录。荣誉对马丁·史密斯的指出了执行时间效率。

SET STATISTICS TIME ONselect FORMAT(N, 'd10') as padWithZeros from TallySET STATISTICS TIME OFF

SQL Server执行时间:CPU时间= 2157毫秒,已用时间= 2696毫秒。

SET STATISTICS TIME ONselect right('0000000000'+ rtrim(cast(N as varchar(5))), 10) from TallySET STATISTICS TIME OFF

SQL Server执行时间:

CPU时间= 31 ms,经过时间= 235 ms。


查看完整回答
反对 回复 2019-08-16
?
侃侃无极

TA贡献2051条经验 获得超10个赞

有几个人提供了这个版本:

right('XXXXXXXXXXXX'+ @str, @n)

要小心,因为如果它长于n,它将截断你的实际数据。


查看完整回答
反对 回复 2019-08-16
  • 3 回答
  • 0 关注
  • 555 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信