0Pricing
SQL Academy · レッスン

連結:||とCONCAT

||演算子とCONCAT()で文字列を連結し、それぞれがNULL入力をどう扱うかを理解します。

「連結:||とCONCAT」はCoddyKit上の無料SQL Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSQL Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 SQL Academyコースには全4レッスンが含まれています。

標準的な連結:||

文字列を連結するSQL標準の演算子は || です。

SELECT first_name || ' ' || last_name AS full_name FROM users;
SELECT 'Hello, ' || name || '!' FROM users;

||とNULLの組み合わせはNULL

いずれかのオペランドがNULLの場合、式全体がNULLになります。明示的に処理してください。

SELECT first_name || ' ' || NULL;     -- NULL

-- Defend with COALESCE:
SELECT first_name || ' ' || COALESCE(last_name, '') FROM users;

CONCAT:NULLに安全な代替手段

CONCATはNULLを空文字列として扱います。

SELECT CONCAT(first_name, ' ', last_name) FROM users;
SELECT CONCAT(first_name, ' ', NULL);     -- 'first_name ' (no NULL)

CONCAT_WS:区切り文字付き

「区切り文字で連結する」場合に最も読みやすい方法です。

SELECT CONCAT_WS(' ', title, first_name, middle_initial, last_name) AS pretty_name
FROM users;
-- ' ' between non-NULL fields only

文字列と数値の混在

キャストを行うか、暗黙の変換に任せることができます(PostgreSQLは厳格なため、明示的なキャストの方が安全です)。

SELECT 'Order #' || id::TEXT  FROM orders;
SELECT CONCAT('Order #', id) FROM orders;     -- CONCAT auto-casts

表示用文字列の作成

読みやすいラベルを組み立てます。

SELECT id,
       email,
       CONCAT_WS(', ', city, region, country) AS location
FROM users;

STRING_AGGによる集約値の連結

複数の行の値を連結するには、STRING_AGG(またはarray_agg)を使用します。

SELECT user_id,
       STRING_AGG(name, ', ' ORDER BY name) AS tag_names
FROM user_tags
GROUP BY user_id;

テンプレート文字列用のFORMAT

PostgreSQLの format() はprintf形式で、NULLにも安全です。

SELECT format('User %s (id=%s) joined on %s',
              full_name, id, created_at::DATE)
FROM users;

空文字列とNULLの違い

列ごとに、空文字列が有効な値かどうかを決めてください。有効でない場合は、入力時に '' をNULLとして扱います。

INSERT INTO contacts (phone) VALUES (NULLIF(:phone, ''));

複数行の文字列リテラル

PostgreSQLでは、エスケープせずに複数行の文字列を記述できるドルクォートをサポートしています。

SELECT $$Hello,
'World' — with quotes!$$;

SELECT $custom_tag$ ... $custom_tag$;

連結のパフォーマンス

連結は高速で、1秒あたり数百万件を処理できます。通常、コストがかかるのは文字列操作ではなく、行のI/Oです。

振り返り

標準的な連結には||、NULLを無視するにはCONCAT/CONCAT_WS、テンプレートにはFORMAT、多数の行の連結にはSTRING_AGGを使用します。

確認問題

last_name がNULLの場合、first_name || ' ' || last_name は何を返しますか?

よくある質問

「連結:||とCONCAT」レッスンは無料ですか?

はい。「連結:||とCONCAT」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、SQL Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 SQL Academyコースには全4レッスンが含まれています。

「連結:||とCONCAT」で何を学びますか?

||演算子とCONCAT()で文字列を連結し、それぞれがNULL入力をどう扱うかを理解します。 ブラウザで直接実行するハンズオンコードでSQL Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

SQL Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSQL Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「連結:||とCONCAT」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSQL Academyレッスンでコードを書いて実行できますか?

はい。すべてのSQL Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 連結:||とCONCAT
  2. UPPER、LOWER、SUBSTRING、REPLACE
  3. TRIM、LPAD、RPAD
  4. 全文検索入門(tsvector、to_tsquery)
← SQL Academyに戻る