1. ホーム
  2. sql

[解決済み] Postgresql SELECT if 文字列が含まれている場合

2022-04-25 06:32:36

質問

私のPostgresqlにある。

TAG_TABLE
==========================
id            tag_name       
--------------------------
1             aaa
2             bbb
3             ccc

私の問題を単純化すると 私がやりたいことは、文字列 "aaaaaaaa" が 'tag_name' を含んでいるときに TAG_TABLE から 'id' を SELECT することです。 つまり、理想的には、タグ名'aaa'のIDである"1"を返すだけでよいのです。

今のところ、こんな感じです。

SELECT id FROM TAG_TABLE WHERE 'aaaaaaaaaaa' LIKE '%tag_name%'

なぜなら、postgres は '%tag_name%' を、そのカラムの実際のデータ値ではなく、 'tag_name' という部分文字列を含むパターンを意味すると考えるからです。

タグ名をパターンに渡すにはどうすればよいですか?

どのように解決するのですか?

タグ名'を引用符で囲んでいない状態で使用すると、レコードのフィールドとして解釈されます。連結は、パーセント記号を含む'||'で行います。

SELECT id FROM TAG_TABLE WHERE 'aaaaaaaa' LIKE '%' || tag_name || '%';