t = "SELECT 基本情報,地域,入出,転出 FROM user WHERE hogehoge('a','bbb','ccc','ddd') AND BETWEEN '2018-01-01 00:00:00' AND '2018-03-01 00:00:00"
という文字列があるとします。
任意の文字列で改行をおこない、下記のような形に仕上げたいと考えています。
SELECT 基本情報 ,地域 ,入出 ,転出 FROM user WHERE hogehoge('a','bbb','ccc','ddd') AND hoteotehote BETWEEN '2018-01-01 00:00:00' AND '2018-03-01 00:00:00 AND (tokyo, kanagawa)
<現状>
replace(",", "¥n, ")のreplace関数で作成したのですが、
下記のようになってしまいます。
SELECT 基本情報 ,地域 ,入出 ,転出 FROM user WHERE hogehoge('a' ,'bbb' ,'ccc' ,'ddd') AND hoteotehote BETWEEN '2018-01-01 00:00:00' AND '2018-03-01 00:00:00 AND (tokyo , kanagawa)
<やりたいこと>
1.WHERE 以降の , の改行を行いたくない
2. ANDで開業はするが
「BETWEEN〜AND」があるばあい、「BETWEEN〜AND」のANDでは開業は行いたくない
です。
お力添えください。
一般的な SQL だとカッコの扱いや文字列など他にもルールが出てくると思います。それは自分でできるんでしょうか?
逆にこれしかないのであれば手で整形すればいいだけのようにも思います。
既存のツールで整形するという手もあります。
https://style.potepan.com/articles/16725.html
確かに手で整形すれば良いのですが、整形するファイル数がかなりあるので、手動で行っていると膨大な時間がかかってしまうため何か対処法はないかというところです。
また
https://style.potepan.com/articles/16725.html
も試したいますが、求める形にはなっていないので、ここで質問しています。
という状況です。
SQL を整形するツールはたくさんあり、中には細かな制御オプションができるものもあると思います。大量ならなおさらそれを使う方が良いと思います。手を抜いて置換したのでは、最悪動かなくなります。
またタイトルに「正規表現」とありますが、正規表現はネストに弱いので、全ての SQL に使用できるものを作るのは困難です。
この質問に載っているものだけ扱えれば良いのであれば簡単ですが。
やはり難しいですか。
ありがとうございます。
回答3件
あなたの回答
tips
プレビュー