SQL Server 2008中的LPAD

jha*_*ash 25 t-sql sql-server

我无法LPAD在SQL Server 2008中看到类似的功能.例如,如何将以下查询转换为T-SQL?谢谢你的回答

select  LPAD(MY_VALUE,2,' ')) VALUE
FROM MY_TABLE
Run Code Online (Sandbox Code Playgroud)

And*_*rew 34

基本上用你想要选择的字符数填充它,然后右键字符串.

Select right(replicate(' ',2) + YourFieldValue,2) from YourTable
Run Code Online (Sandbox Code Playgroud)

您可以使用空格函数而不是复制空格(number_of_spaces),复制只允许您使用其他字符填充.


Álv*_*lez 5

在查询中应用手动计算可能很烦人。幸运的是,我们可以创建一个函数:

CREATE FUNCTION LPAD
(
    @string VARCHAR(MAX), -- Initial string
    @length INT,          -- Size of final string
    @pad CHAR             -- Pad character
)
RETURNS VARCHAR(MAX)
AS
BEGIN
    RETURN REPLICATE(@pad, @length - LEN(@string)) + @string;
END
GO
Run Code Online (Sandbox Code Playgroud)

(请更换VARCHARNVARCHAR自己的喜好,或使用其它的算法。)

然后:

SELECT dbo.LPAD(MY_VALUE, 2, ' ') VALUE
FROM MY_TABLE
Run Code Online (Sandbox Code Playgroud)

应该从 SQL Server 2005 开始工作