1

現在、 ['key1', 'key2', 'key3'.......] のようなキーワード配列があります。キーワードは数字または文字にすることができます。

テーブル (postgres データベース) を検索し、すべてのレコードにその配列にいずれかのキーワードが含まれていることを確認したい場合、どうすればよいですか?

例: name という列と description という列を持つテーブルを取得しました。

名前または説明のいずれかに、その配列にキーワードが含まれているすべてのレコードを見つける必要があります。

ありがとう

4

2 に答える 2

4

たぶん、この例は役に立つでしょう:

CREATE TABLE TEST(
  FIELD_KEY TEXT);

INSERT INTO TEST VALUES('this is hello');
INSERT INTO TEST VALUES('hello');
INSERT INTO TEST VALUES('this');
INSERT INTO TEST VALUES('other message');

SELECT *
FROM TEST
WHERE FIELD_KEY LIKE ANY (array['%this%', '%hel%']);

これは以下を返します:

this is hello
hello
this

ここで他の例:

SELECT *
FROM TEST
WHERE FIELD_KEY ~* 'this|HEL';

~* は大文字と小文字を区別しない、~ は大文字と小文字を区別する

この例はこちらで試すことができます。

于 2013-07-17T20:13:08.243 に答える
2
select *
from t
where
    array[name] <@ my_array
    or array[description] <@ my_array

演算子likeanyサブクエリ式と結合します。

select *
from t
where name like any (values ('%John%'), ('%Mary%'))

または配列構文:

where name like any (array['%John%', '%Mary%'])
于 2013-07-17T19:25:48.390 に答える