[pgsql-jp: 33687] Re: [Q]配列内の文字列検索について

Mashiki mashiki @ yanah.com
2004年 7月 15日 (木) 20:03:32 JST


 Mashikiです。

>と言うことだそうですので
>select * from t3 where '新秋田叢書'  ~ any(data);
>は{新秋田叢書}にマッチしても{秋田}にマッチするとは思えないんで?なんです。

 この順序ですとany(data)のほうがパターンになりますので、
この結果のとおりですね。any(xxx)をlikeや「~」演算子の左辺
に持っていければいいのでしょうが、syntaxエラーになって
しまいますね。

少々強引かもしれませんが、dataの配列の内容にブランクが
ないと仮定して、

select * from t3
 where any(data) like '%秋田叢書';

の代用記法として

select * from t3
 where array_to_string(data,' ')||' ' ~ '秋田叢書 ';

もしくは

select * from t3
 where array_to_string(data,' ')||' ' like '%秋田叢書 %';


 title_code | tag  |     data
------------+------+--------------
 5010000036 | 251A | {新秋田叢書}
 5010000036 | 551B | {新秋田叢書}
 5010000037 | 251A | {新秋田叢書}
 5010000037 | 551B | {新秋田叢書}
 5010000038 | 251A | {新秋田叢書}
 5010000038 | 551B | {新秋田叢書}
 5010000039 | 251A | {新秋田叢書}
 5010000039 | 551B | {新秋田叢書}
 5010000040 | 251A | {新秋田叢書}
 5010000040 | 551B | {新秋田叢書}
(10 rows)

なんてどうでしょ。



pgsql-jp メーリングリストの案内