[PHP-users 19437]Re: SQL文のSELECT項目を変換する正規表現について

k.watanabe k.watanabe @ spclink.com
2003年 12月 19日 (金) 19:08:47 JST


k-wataです。

レスありがとうございます。

中村さん

> 2回 select 文を発行するのが正しい姿じゃないかと思いますが。

> > ・「SELECT」文の項目を「COUNT」に変えて1回実行
> > ・元のSQL文に「LIMIT」句を加えて1回実行

こちらが、1つもメソッド内で2回のSQLを別々に実行して
結果も別々に取得するという意味でした。
理解しにくかった点は、申し訳ありません。


古賀さん、宇野さん

> よく落ちついて考えて下さい。この2つのSQL文は、WHERE句は共通のハズです。
> ですから、まず与えられた検索条件からWHERE句のみを組み立てるメソッドと、
> 得たい情報に応じてSQLの残りを組み立てるメソッド、を分離します。
> そして得られた結果を欲しいデータ形式で返すメソッド、を組み合わせれば、
> 自ずと解決策に至るはずです。

> そういうことなら、メソッドへの引き数にSQL文そのものを渡すのをやめて、
> 「項目」と「FROM以降」を分けて渡しましょう。悩む必要がなくなります。

まとめてですみません。

一発で解決しようとしていたため、正規表現で悩んでいました。
無理せず、段階的に切り分けて、組み合わせていく形で検討しようと思います。

今思ったのですが、SELECT項目と「FROM」の間に改行 or TAB を
入れるというルールづけをしたらどうかなぁとか・・・。
# そうすると、ヒアドキュメントでSQLを書いている方は、
# 改行が任意の個所に入ってきてしまいますね・・・。

> ちなみに、プログラミング言語処理系の理論を学ぶと分かりますが、
> SQLの構文解析は正規表現のみでは「できません」。

そうでしたか、勉強になります。

結果的に、正規表現の使用jはあきらめて別の方法を検討してみます。
ありがとうございました。

--
k.watanabe



PHP-users メーリングリストの案内