Cad*_*oux 201 sql t-sql sql-server
相比之下说:
REPLICATE(@padchar, @len - LEN(@str)) + @str
Run Code Online (Sandbox Code Playgroud)
Ale*_*use 319
无论您如何操作,这只是SQL的低效使用.
也许是这样的
right('XXXXXXXXXXXX'+ rtrim(@str), @n)
Run Code Online (Sandbox Code Playgroud)
其中X是您的填充字符,@ n是结果字符串中的字符数(假设您需要填充,因为您正在处理固定长度).
但正如我所说,你应该真的避免在你的数据库中这样做.
小智 54
我知道这最初是在2008年被问到的,但是SQL Server 2012引入了一些新的功能.FORMAT功能简化了左边的填充.它还会为您执行转换:
declare @n as int = 2
select FORMAT(@n, 'd10') as padWithZeros
Run Code Online (Sandbox Code Playgroud)
更新:
我想自己测试FORMAT功能的实际效率.我很惊讶地发现,与AlexCuse的原始答案相比,效率并不是很好.虽然我发现FORMAT功能更清洁,但在执行时间方面效率不高.我使用的Tally表有64,000条记录.荣誉对马丁·史密斯的指出了执行时间效率.
SET STATISTICS TIME ON
select FORMAT(N, 'd10') as padWithZeros from Tally
SET STATISTICS TIME OFF
Run Code Online (Sandbox Code Playgroud)
SQL Server执行时间:CPU时间= 2157毫秒,已用时间= 2696毫秒.
SET STATISTICS TIME ON
select right('0000000000'+ rtrim(cast(N as varchar(5))), 10) from Tally
SET STATISTICS TIME OFF
Run Code Online (Sandbox Code Playgroud)
SQL Server执行时间:
CPU时间= 31 ms,经过时间= 235 ms.
Kev*_*vin 36
有几个人提供了这个版本:
right('XXXXXXXXXXXX'+ @str, @n)
Run Code Online (Sandbox Code Playgroud)
要小心,因为如果它长于n,它将截断你的实际数据.
Skl*_*vvz 16
@padstr = REPLICATE(@padchar, @len) -- this can be cached, done only once
SELECT RIGHT(@padstr + @str, @len)
Run Code Online (Sandbox Code Playgroud)
也许过度杀戮我有这些UDF左右填充
ALTER 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
Run Code Online (Sandbox Code Playgroud)
并向右
ALTER function [dbo].[fsPadRight](@var varchar(200),@padchar char(1)='0', @len int) returns varchar(201) as
Begin
--select @padChar=' ',@len=200,@var='hello'
return @var+replicate(@PadChar,@len-Len(@var))
end
Run Code Online (Sandbox Code Playgroud)
我不确定你提供的方法是否效率很低,但是另一种方法是,只要它不必在长度或填充字符中具有灵活性,就会(假设你想要用它来填充它) 0"到10个字符:
DECLARE
@pad_characters VARCHAR(10)
SET @pad_characters = '0000000000'
SELECT RIGHT(@pad_characters + @str, 10)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
280237 次 |
| 最近记录: |