総まとめ
この演習では、film テーブルと category テーブルを使って、カテゴリの film_category と映画の name を連結した title という新しいフィールドを作成しましょう。また、film テーブルの description 列のようなテキストフィールドを、単語の途中で切り捨てないようにする方法も練習します。
これを実現するために、REVERSE() 関数を使用します。50文字目までの description の中で、最後の空白文字の位置を特定するためです。この手法を使うと、切り捨てたい最後の文字の位置を正確に求め、50文字以内に収めつつ単語が途中で切れないようにすることができます。
少し高度なテクニックですが、きっとできます。さっそく取り組みましょう。
この演習はコースの一部です
PostgreSQL のデータ操作関数
演習の手順
description列の先頭50文字を取得します。- 切り捨てた
description列の最後の空白文字の位置を求め、その値を 50 から引いた結果を、最初の関数の第2引数として指定します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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;