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

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

相比之下说:

REPLICATE(@padchar, @len - LEN(@str)) + @str


收到一只叮咚
浏览 556回答 3
3回答

函数式编程

无论您如何操作,这只是SQL的低效使用。也许是这样的right('XXXXXXXXXXXX'+ rtrim(@str), @n)其中X是您的填充字符,@ n是结果字符串中的字符数(假设您需要填充,因为您正在处理固定长度)。但正如我所说,你应该真的避免在你的数据库中这样做。

慕少森

我知道这最初是在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 OFFSQL Server执行时间:CPU时间= 2157毫秒,已用时间= 2696毫秒。SET STATISTICS TIME ONselect right('0000000000'+ rtrim(cast(N as varchar(5))), 10) from TallySET STATISTICS TIME OFFSQL Server执行时间:CPU时间= 31 ms,经过时间= 235 ms。

侃侃无极

有几个人提供了这个版本:right('XXXXXXXXXXXX'+ @str, @n)要小心,因为如果它长于n,它将截断你的实际数据。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server