SQL 方言通

首页 / 字符串

LPAD 左侧补齐

LPAD(str, len, pad) 在左侧用 pad 补齐到 len 个字符,str 比 len 长时截断。七个引擎都同名可用,差异在边界情况:填充串为空时 Hive 返回 NULL、Doris 返回空字符串;StarRocks、Spark 和 Hologres 可以省略 pad,默认补空格。

各引擎写法 · 迁移注意事项 · 示例

各引擎写法

引擎支持写法说明依据
MaxCompute支持LPAD(str1, length, str2)length 小于 str1 长度时从左截取 length 位;length 为 0 时返回空串;任一参数为 NULL 时返回 NULL。官方文档
Hologres支持LPAD(str, length[, fill])str 已超过 length 时从右侧截断,只保留前 length 个字符。不指定 fill 时补空格。官方文档
StarRocks支持lpad(str, len[, pad])len 按字符计算。str 比 len 长时截断;不传 pad 时补空格。官方文档
Doris支持LPAD(str, len, pad)按字符长度计算。len 小于原长度时只保留前 len 个字符;pad 为空串且需要补齐时返回空字符串;len 为负数时返回 NULL。官方文档已实测 4.1.5
Hive支持lpad(string str, int len, string pad)str 比 len 长时截断为 len 个字符。pad 为空串时返回 NULL。官方文档已实测 4.2.1
Spark SQL支持lpad(str, len[, pad])Spark 1.5.0 起提供。str 比 len 长时截断;不传 pad 时字符串补空格。官方文档
Flink SQL支持LPAD(string1, integer, string2)string1 比 integer 长时截断为 integer 个字符。官方文档已实测 2.3.0

迁移注意事项

示例

把编号补齐为 6 位

MaxCompute
SELECT LPAD(CAST(id AS STRING), 6, '0') FROM items;
Hologres
SELECT LPAD(CAST(id AS TEXT), 6, '0') FROM items;
StarRocks
SELECT lpad(CAST(id AS VARCHAR), 6, '0') FROM items;
Doris
SELECT LPAD(CAST(id AS VARCHAR), 6, '0') FROM items;
Hive
SELECT lpad(CAST(id AS STRING), 6, '0') FROM items;
Spark SQL
SELECT lpad(CAST(id AS STRING), 6, '0') FROM items;
Flink SQL
SELECT LPAD(CAST(id AS STRING), 6, '0') FROM items;

同类函数

字符串:全部引擎写法对照

核对日期: · 提交勘误