[toc] # 第九十二章 SQL函数 LPAD 字符串函数,它返回一个左填充到指定长度的字符串。 # 大纲 ``` LPAD(string-expression,length[,padstring]) ``` # 参数 - `string-expression` - 字符串表达式,可以是列名、字符串文字、主机变量或另一个标量函数的结果。可以是可转换为 `VARCHAR` 数据类型的任何数据类型。字符串表达式不能是流。 - `length` - 一个整数,指定返回的字符串中的字符数。 - `padstring` - 可选 — 由一个字符或一串字符组成的字符串,用于填充输入字符串表达式。 `padstring` 字符或字符附加到 `string-expression` 的左侧,以提供创建长度字符的输出字符串所需的尽可能多的字符。 `padstring` 可以是字符串文字、列、主机变量或另一个标量函数的结果。如果省略,则默认为空格字符。 # 描述 `LPAD` 用前导填充字符填充字符串表达式。它返回填充到长度字符数的字符串的副本。如果字符串表达式的长度超过 `length` 个字符,则返回字符串被截断为 `length` 个字符。 如果 `string-expression` 为 `NULL`,则 `LPAD` 返回 `NULL`。如果 `string-expression` 是空字符串`('')` ` LPAD` 返回一个完全由填充字符组成的字符串。返回的字符串是 `VARCHAR` 类型。 `LPAD` 可用于针对链接表的查询。 `LPAD` 不会删除前导或尾随空格;它填充字符串,包括任何前导或尾随空格。要在填充字符串之前删除前导或尾随空格,请使用 `LTRIM`、`RTRIM` 或 `TRIM`。 ## LPAD 和 $JUSTIFY `LPAD` 的双参数形式和 `$JUSTIFY` 的双参数形式都通过用前导空格填充字符串来右对齐字符串。这两个参数形式的不同之处在于它们如何处理比输入字符串表达式的长度短的输出长度:`LPAD` 截断输入字符串以适应指定的输出长度。 `$JUSTIFY` 扩展输出长度以适应输入字符串。这在以下示例中显示: ```sql SELECT '>'||LPAD(12345,10)||'<' AS lpadplus, '>'||$JUSTIFY(12345,10)||'<' AS justifyplus, '>'||LPAD(12345,3)||'<' AS lpadminus, '>'||$JUSTIFY(12345,3)||'<' AS justifyminus ``` # 示例 以下示例用 `^` 字符(在需要时)左填充列值以返回长度为 `16` 的字符串。请注意,一些名称字符串被左填充,一些名称字符串被右截断以返回长度为 `16` 的字符串。 ```sql SELECT TOP 15 Name,LPAD(Name,16,'^') AS Name16 FROM Sample.Person ``` 以下示例使用 `^=^` 填充字符串(在需要时)填充列值以返回长度为 `20 `的字符串。请注意,填充名称字符串根据需要重复多次,并且一些返回字符串包含部分填充字符串: ```sql SELECT TOP 15 Name,LPAD(Name,20,'^=^') AS Name20 FROM Sample.Person ```