[PHP-users 19420]SQL文のSELECT項目を変換する正規表現について
k.watanabe
k.watanabe @ spclink.com
2003年 12月 19日 (金) 11:56:15 JST
はじめまして、k-wataと申します。
SQL文のSELECT項目をCOUNT(*)に変換する
ということを正規表現でできないかなと考えています。
例としては
「SELECT A, B, C FROM D ・・・」を
「SELECT COUNT(*) FROM D ・・・」
というように。
最初は、
$ret = preg_split( "/(\r\n|\r|\n|\s|\t)/i", $sql);
を実行した結果配列から
「SELECT」と「FROM」の間の配列要素を「COUNT(*)」に変換すればよいと
思っていたのですが、よく考えてみると、
・SELECT A, B, C FROM D ・・・
は良いとして
・SELECT A " FROM " FROM B ・・・
・SELECT ' FROM ' AS A FROM B ・・・
・SELECT (SELECT A FROM B) AS A FROM B ・・・
のSQLだとSELECT文項目中の「FROM」文字列が引っかかり、
意図した結果となりません。
皆様、何か正規表現を使用したスマートなアイデアはないでしょうか?
環境は
Linux + Apache 2.0.48 + PHP 4.3.0
です。
よろしくお願いします。
--
k.watanabe
PHP-users メーリングリストの案内