PostgreSQL 教程: lpad 函数

九月 22, 2023

PostgreSQL 的LPAD()函数用字符序列将一个字符串左侧填充到指定长度。

语法

下面说明了LPAD()函数的语法:

LPAD(string, length[, fill])

参数

LPAD()函数接受 3 个参数:

1) string

string是一个应该在左侧填充的字符串。

2) length

length是一个正整数,指定填充后结果字符串的长度。

请注意,如果字符串比length参数长,则字符串将在右侧被截断。

3) fill

fill是用于填充的字符串。

fill参数是可选的。如果省略fill参数,则其默认值为空格。

返回值

PostgreSQL 的LPAD()函数返回一个左侧填充到length个字符的字符串。

示例

让我们看一些使用LPAD()函数的示例。

以下语句使用LPAD()函数在字符串 ‘PostgreSQL’ 左侧填充 ‘*’:

SELECT LPAD('PostgreSQL',15,'*');

结果是:

      lpad
----------------
 *****PostgreSQL
(1 row)

在此示例中,PostgreSQL 字符串的长度为 10,结果字符串的长度应为 15,因此,LPAD()函数在字符串左侧填充 5 个字符*

请参见示例数据库中的customerpayment表,如下:

customer and payment tables

以下语句说明了如何使用LPAD()函数,根据每个客户的付款总额绘制图表。

SELECT first_name || ' ' || last_name fullname,
    SUM(amount) total,
    LPAD('*', CAST(TRUNC(SUM(amount) / 10) AS INT), '*') chart
FROM payment
INNER JOIN customer using (customer_id)
GROUP BY customer_id
ORDER BY SUM(amount) DESC;

下图说明了结果:

PostgreSQL LPAD example

在这个例子中,

  • 首先,我们使用SUM()函数和GROUP BY子句将每个客户的付款相加,
  • 其次,我们使用各种函数根据付款总额计算条形图的长度:用TRUNC()截断付款总额,用CAST()TRUNC()结果转换为整数。为了使条形图更易于阅读,我们将付款总额除以 10。
  • 第三步,我们根据上面第二步的结果应用LPAD()函数来填充字符 (*)。

在本教程中,您学习了如何使用 PostgreSQL 的LPAD()函数,在字符串左侧填充字符到一定长度。