人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Postgresのパターンマッチングについての質問です。
SELECT文でDB内を検索にかけ、「特定の列のデータ」が「検索単語」内に含まれる場合にその行を取得する、という正規表現を書きたいのですが可能でしょうか。(「特定の列のデータ」内に「検索単語」が含まれる、というのの逆になる点に注意してください。)

例)
DB内の特定の行には"TEST"という文字列が格納されているものとしますした場合、下記例では

検索データ
1・・・"TEST_AAAA" ・・・検索にHITする
2・・・"BBB_TEST" ・・・検索にHITする
3・・・"CCC_TEST_CCC" ・・・検索にHITする
4・・・"TE_DDD_ST" ・・・検索にHITしない
5・・・"EEE" ・・・検索にHITしない

以上、よろしくお願いします。

●質問者: n_maco2
●カテゴリ:インターネット ウェブ制作
✍キーワード:dB SELECT test データ パターン
○ 状態 :終了
└ 回答数 : 9/9件

▽最新の回答へ

1 ● kurukuru-neko
●5ポイント

PostGreSQLは、標準のSQLに準拠しているので

%: 任意の文字数の任意の文字

_: 1文字の任意の文字

をサポートしています。

http://www.atmarkit.co.jp/fnetwork/rensai/sql01/sql1.html

◎質問者からの返答

ご回答ありがとうございます。

それは知っていますが、知りたいのは私が求めていることが可能かどうかです。


2 ● takemori
●44ポイント ベストアンサー

WHERE '検索単語' like '%' || 列名 || '%';

でいいと思います。

実際試して出来ましたlol

◎質問者からの返答

ご回答ありがとうございます。

正規表現に未熟なものでどうしてOKなのかわかりませんが、研究してみたいと思います。

ありがとうございました!


3 ● kurukuru-neko
●5ポイント

添付忘れ

PostGreSQLのパターンマッチング仕様

正規表現を使う方法でも、又はorでも可能

PostGreSQL 7.3.4

http://kaiunix.cs.shinshu-u.ac.jp/Lesson/DataBaseIT/manual/7...

PostGreSQL 7.4

http://osb.sraoss.co.jp/PostgreSQL/Manual/PostgreSQL-7.4-ja/...

PostGreSQL 8.0

http://osb.sraoss.co.jp/PostgreSQL/Manual/PostgreSQL-8.0-ja/...

◎質問者からの返答

ご回答ありがとうございます。

マニュアルなら見たのですがそれでもわからなかったもので・・・


4 ● b-wind
●10ポイント

正規表現ではありませんが、特定の列を A とすると

SELECT A FROM TEST_TABLE WHERE 'TEST_AAAA' LIKE '%' + A + '%' ;

でどうでしょうか?

ただ、確実にインデックスは使えないので、データ量が多くなるとリニアに検索速度が遅くなると思います。

◎質問者からの返答

ご回答ありがとうございます。

いただいた正規表現で試してみます。

> ただ、確実にインデックスは使えないので、データ量が多くなるとリニアに検索速度が遅くなると思います。

これは盲点でした・・・

ご注意ありがとうございます。


5 ● vector
●0ポイント

ちょいと疑問なのですが、

AA_BTESTC_DD

のような場合はHITさせるのでしょうか?

◎質問者からの返答

はい、HITさせたいです。


1-5件表示/9件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ