PostgreSQL-LIKE句
PostgreSQL LIKE演算子は、ワイルドカードを使用してテキスト値をパターンと照合するために使用されます。検索式をパターン式と一致させることができる場合、LIKE演算子はtrueを返します。1。
LIKE演算子と組み合わせて使用される2つのワイルドカードがあります-
- パーセント記号(%)
- アンダースコア(_)
パーセント記号は、0、1、または複数の数字または文字を表します。アンダースコアは、単一の数字または文字を表します。これらの記号は組み合わせて使用できます。
これらの2つの符号のいずれかがLIKE句と組み合わせて使用されていない場合、LIKEはequals演算子のように機能します。
構文
%と_の基本的な構文は次のとおりです-
SELECT FROM table_name
WHERE column LIKE 'XXXX%'
or
SELECT FROM table_name
WHERE column LIKE '%XXXX%'
or
SELECT FROM table_name
WHERE column LIKE 'XXXX_'
or
SELECT FROM table_name
WHERE column LIKE '_XXXX'
or
SELECT FROM table_name
WHERE column LIKE '_XXXX_'
ANDまたはOR演算子を使用して、N個の条件を組み合わせることができます。ここで、XXXXは任意の数値または文字列値です。
例
これは、 '%'および '_'演算子を使用して異なるLIKE句を持つWHERE部分を示すいくつかの例です-
S.いいえ。 | ステートメントと説明 |
---|---|
1 | WHERE SALARY::text LIKE '200%' 200で始まる値を検索します |
2 | WHERE SALARY::text LIKE '%200%' 任意の位置に200がある値を検索します |
3 | WHERE SALARY::text LIKE '_00%' 2番目と3番目の位置に00がある値を検索します |
4 | WHERE SALARY::text LIKE '2_%_%' 2で始まり、長さが3文字以上の値を検索します |
5 | WHERE SALARY::text LIKE '%2' 2で終わる値を検索します |
6 | WHERE SALARY::text LIKE '_2%3' 2番目の位置に2があり、3で終わる値を検索します |
7 | WHERE SALARY::text LIKE '2___3' 2で始まり3で終わる5桁の数字の値を検索します |
PostgresLIKEは文字列比較のみです。したがって、上記の例のように、整数列を文字列に明示的にキャストする必要があります。
実際の例を見てみましょう。次のようなレコードを持つテーブルCOMPANYについて考えてみましょう。
# 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 −で始まるCOMPANYテーブルのすべてのレコードを表示する例です。
testdb=# 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がテキスト内にハイフン(-)を持つCOMPANYテーブルのすべてのレコードを表示する例です-
testdb=# 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)