最有效的T-SQL方式将左边的varchar填充到一定长度?相比之下说:REPLICATE(@padchar, @len - LEN(@str)) + @str
3 回答
函数式编程
TA贡献1807条经验 获得超9个赞
无论您如何操作,这只是SQL的低效使用。
也许是这样的
right('XXXXXXXXXXXX'+ rtrim(@str), @n)
其中X是您的填充字符,@ n是结果字符串中的字符数(假设您需要填充,因为您正在处理固定长度)。
但正如我所说,你应该真的避免在你的数据库中这样做。
慕少森
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。
- 3 回答
- 0 关注
- 555 浏览
添加回答
举报
0/150
提交
取消