0

「LIKE」を使用して、たとえば文字列に「R011」、「R012」、「R021」、「R022」を含む行を検索する方法は?「R01」または「R02」を選択したくありません。

SELECT 'Code'
FROM "public"."Test"
WHERE 'Code' LIKE 'R01%';

「コード」列の「テスト」という名前のテーブルで、上記のクエリを使用しましたが、結果は次のとおりです。

no rows found.

行は次のようになります。

R(01-04,11)  Personnel professionnel des
R01  M้decins, dentistes et v้t้r.
R011 M้decins sp้cialistes
R022 Omnipraticiens et m้decins en m้decine
4

2 に答える 2

2
SELECT *
FROM   public."Test"
WHERE  "Code" LIKE 'R0__';

これには の後に 2 文字が必要'R0'です。

一重引用符の使用は意味がありません。マニュアルの識別子とキーワードについて読むことから始めます。私のアドバイス: 大文字と小文字が混在する識別子は使用しないでください。次に、パターン マッチングに関する情報
に進みます。

より具体的には、次のような正規表現を使用できます。

WHERE  "Code" ~ '^R0\d\d$';  -- allowing any 2 digits

あるいは:

WHERE  "Code" ~ '^R0[12]{2}$';  -- allowing only 1 and 2
于 2013-07-19T00:03:50.170 に答える
0

パーセント文字の代わりにアンダースコアを使用します。アンダースコア_は 1 文字に一致し、パーセント%は 0 個以上の文字に一致します。

select 'R011' like 'R01_'
# true

select 'R01' like 'R01_'
# false

または、正規表現を使用して 10 進文字だけに一致させることもできます。

select 'R011' ~ 'R\\d{3}'

http://www.postgresql.org/docs/9.2/static/functions-matching.html

于 2013-07-18T22:55:48.997 に答える