综合应用
在本练习中,我们将使用 film 和 category 表,通过将分类的 name 与影片的 title 连接起来,创建一个名为 film_category 的新字段。您还将练习如何截断像 film 表中 description 这样的文本列,并且不把单词截断在中间。
为此,我们将使用 REVERSE() 函数,帮助确定在到达 50 个字符之前,description 中最后一个空白字符的位置。该技巧可用于确定您想要截断的最后一个字符的位置,并确保其小于或等于 50 个字符,且不会把单词截断。
这是一个进阶技巧,但我相信您可以做到!让我们开始吧。
本练习是课程的一部分
在 PostgreSQL 中使用函数处理数据
练习说明
- 获取
description列的前 50 个字符。 - 确定截断后的
description列中最后一个空白字符的位置,并将其从数字 50 中减去,作为上面第一个函数的第二个参数。
交互式实操练习
通过完成这段示例代码来试试这个练习。
SELECT
UPPER(c.name) || ': ' || f.title AS film_category,
-- Truncate the description without cutting off a word
___(description, 50 -
-- Subtract the position of the first whitespace character
___(
' ' IN REVERSE(LEFT(description, 50))
)
)
FROM
film AS f
INNER JOIN film_category AS fc
ON f.film_id = fc.film_id
INNER JOIN category AS c
ON fc.category_id = c.category_id;