teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

引数のsではなく、とを使っていたのを修正しました。

2020/11/30 09:44

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  ```python
7
7
  >>> def decomp_sql(s):
8
- ... return re.sub(r'([ ,])', r'\1\n',re.sub('WHERE.*', '', t))+'WHERE\n'+re.sub(r'(BETWEEN[^\n]*)\nAND\n', r'\1AND',re.sub(r'AND', '\nAND\n', re.sub('.*WHERE', '', t)))
8
+ ... return re.sub(r'([ ,])', r'\1\n',re.sub('WHERE.*', '', s))+'WHERE\n'+re.sub(r'(BETWEEN[^\n]*)\nAND\n', r'\1AND',re.sub(r'AND', '\nAND\n', re.sub('.*WHERE', '', s)))
9
9
  ...
10
10
  >>> t = "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)"
11
11
  >>> print(decomp_sql(t))

1

WHEREが抜けていたので修正しました。

2020/11/30 09:44

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  ```python
7
7
  >>> def decomp_sql(s):
8
- ... return re.sub(r'([ ,])', r'\1\n',re.sub('WHERE.*', '', t))+re.sub(r'(BETWEEN[^\n]*)\nAND\n', r'\1AND',re.sub(r'AND', '\nAND\n', re.sub('.*WHERE', '', t)))
8
+ ... return re.sub(r'([ ,])', r'\1\n',re.sub('WHERE.*', '', t))+'WHERE\n'+re.sub(r'(BETWEEN[^\n]*)\nAND\n', r'\1AND',re.sub(r'AND', '\nAND\n', re.sub('.*WHERE', '', t)))
9
9
  ...
10
10
  >>> t = "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)"
11
11
  >>> print(decomp_sql(t))
@@ -16,6 +16,7 @@
16
16
  転出
17
17
  FROM
18
18
  user
19
+ WHERE
19
20
  hogehoge('a','bbb','ccc','ddd')
20
21
  AND
21
22
  hoteotehote BETWEEN '2018-01-01 00:00:00' AND '2018-03-01 00:00:00'