メインコンテンツにスキップ
モジュール 6 · レッスン 1 / 4コース内の 21/57~12 min
モジュールのレッスン (1/4)

文字列関数

PostgreSQL には、文字列を操作するための関数が多数あります。このレッスンでは 実際の作業で最も一般的なものを見ていきます。正規化 (LOWER/UPPER)、 測定 (LENGTH)、構成 (|| / CONCAT)、抽出 (SUBSTRING)、 クリーンアップ (TRIM)、置換 (REPLACE)、パターン検索 (LIKE / ILIKE)。

使用する関数

SQL
LOWER('Alice')                -- 'alice'
UPPER('alice')                -- 'ALICE'
LENGTH('alice')               -- 5
'a' || 'b'                    -- 'ab'  (concatenazione)
CONCAT('a', 'b', 'c')         -- 'abc' (versione "funzione")
SUBSTRING('hello' FROM 2 FOR 3) -- 'ell'
TRIM(' alice ')               -- 'alice'
REPLACE('foo bar', 'bar','x') -- 'foo x'

|| は、文字列を連結するための標準 SQL 演算子です。 CONCAT は より寛容です (NULL は無視されますが、|| はそれらを伝播します。 'a' || NULL → NULL)。

LIKE と ILIKE: パターンによる検索

LIKE はパターンを検索します: % = 任意のシーケンス、_ = 単一 キャラクター。 大文字と小文字が区別されます。 ILIKE は PostgreSQL です 大文字と小文字を区別しない バリアント:

SQL
WHERE name LIKE  '%Cuffie%'   -- match esatto "Cuffie"
WHERE name ILIKE '%cuffie%'   -- match anche "CUFFIE", "Cuffie", "cuffie"
WHERE email LIKE  '%@example.com'
WHERE first_name LIKE 'A_____'  -- inizia per A, lungo 6 (A + 5 caratteri)

パターン内でリテラルの % または _ を検索するには、ESCAPE を使用します。

SQL
WHERE titolo LIKE '%50\%%' ESCAPE '\';   -- contiene "50%"

機能を組み合わせる

関数は他の言語と同様に構成されます。

SQL
-- Email "normalizzata" e iniziali in maiuscolo:
SELECT LOWER(email) AS email_norm,
       UPPER(SUBSTRING(first_name FROM 1 FOR 1)) || '.'
       || UPPER(SUBSTRING(last_name  FROM 1 FOR 1)) || '.' AS iniziali
FROM   customers
ORDER BY id;

試してみてください

運動#sql.m6.l1.e1
試行回数: 0読み込み中…

各顧客について、電子メールを小文字で表示し (電子メール列)、フルネームを「first_name last_name」(full_name 列) として表示します。 IDで注文します。

エディターを読み込み中…
ヒントを表示

最初の列には LOWER、 ||間にスペースを入れて連結します。

3 回の試行後に解決策が利用可能になります

復習演習

運動#sql.m6.l1.e2
試行回数: 0読み込み中…

(いずれの場合も) 名前に「ラップトップ」という単語が含まれるすべての製品を検索します。名前列のみを表示します。名前で注文します。

エディターを読み込み中…
ヒントを表示

ILIKE では大文字と小文字が区別されません。任意の位置の「laptop」と一致するには、「%laptop%」を使用します。

3 回の試行後に解決策が利用可能になります