PostgreSQL LIKE 句
PostgreSQLデータベースで、特定の文字を含むデータを取得したい場合は、使用できますLIKE句。
LIKE 句では、通常ワイルドカードと組み合わせて使用します。ワイルドカードは任意の文字を表します。PostgreSQL では、主に次の2つのワイルドカードがあります:
- パーセント記号%
- アンダースコア_
上記の2つのワイルドカードを使用しない場合、LIKE 句と等号=得られる結果は同じです。
構文
次は、LIKE 句とパーセント記号を組み合わせて使用する場合の%およびアンダースコア_データベースからデータを取得するための一般的な構文です:
SELECT FROM table_name WHERE column LIKE 'XXXX%'; 或者 SELECT FROM table_name WHERE column LIKE '%XXXX%'; 或者 SELECT FROM table_name WHERE column LIKE 'XXXX_'; 或者 SELECT FROM table_name WHERE column LIKE '_XXXX'; 或者 SELECT FROM table_name WHERE column LIKE '_XXXX_';
WHERE 句で任意の条件を指定できます。
AND または OR を使用して、1つ以上の条件を指定できます。
XXXX任意の数字または文字を指定できます。
例
次は LIKE 文で示した%と_いくつかの違いです:
| 例 | 説明 |
|---|---|
| WHERE SALARY::text LIKE '200%' | SALARY フィールドで 200 で始まるデータを検索します。 |
| WHERE SALARY::text LIKE '%200%' | SALARY フィールドに 200 という文字を含むデータを検索します。 |
| WHERE SALARY::text LIKE '_00%' | SALARY フィールドの2番目と3番目の位置に 00 があるデータを検索します。 |
| WHERE SALARY::text LIKE '2_%_%' | SALARY フィールドで 2 で始まり、文字長が 3 より大きいデータを検索します。 |
| WHERE SALARY::text LIKE '%2' | SALARY フィールドで 2 で終わるデータを検索します。 |
| WHERE SALARY::text LIKE '_2%3' | SALARY フィールドで 2 が2番目の位置にあり、3 で終わるデータを検索します。 |
| WHERE SALARY::text LIKE '2___3' | SALARY フィールドで 2 で始まり、3 で終わり、かつ5桁のデータを検索します。 |
PostgreSQL では、LIKE 句は文字の比較にのみ使用できます。そのため、上記の例では、整数データ型を文字列データ型に変換する必要があります。
COMPANY テーブルを作成します(COMPANY SQL ファイルをダウンロード)、データ内容は次のとおりです:
サンプルdb# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
次の例では、AGE が 2 で始まるデータを検索します:
サンプルdb=# SELECT * FROM COMPANY WHERE AGE::text LIKE '2%';
次の結果が得られます:
id | name | age | address | salary ----+-------+-----+-------------+-------- 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 8 | Paul | 24 | Houston | 20000 (7 rows)
次の例では、address フィールドに-という文字を含むデータを検索します:
サンプルdb=# SELECT * FROM COMPANY WHERE ADDRESS LIKE '%-%';
結果は次のとおりです:
id | name | age | address | salary ----+------+-----+-------------------------------------------+-------- 4 | Mark | 25 | Rich-Mond | 65000 6 | Kim | 22 | South-Hall | 45000 (2 rows)その他の拡張