始める無料で始める

総まとめ

この演習では、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;
コードを編集して実行