我在python中有多个子查询的sql查询。因此,设置是在较大的字符串中包含多个子字符串。我想检查子字符串中一个字符串的实例数。比我所看到的更多参与,并感谢您的帮助。
这样设置-
qry = '''
with
qry_1 as (
SELECT ID,
NAME
FROM ( ... other code...
),
qry_2 as (
SELECT ID,
NAME
FROM (...other code...
),
qry_3 as (
SELECT WEATHER
FROM (...other code..
)
'''
我想计算ID
内for的实例qry_1, qry_2, qry_3
。
我认为可以利用某些内容re.findall
然后进行子字符串搜索?
re.findall(r'as \( select (.+?) from \(',qry)
然后查找并计算其中的实例ID
?输出为2。但是我不确定如何...
您可以使用re.findall
和sum
:
import re
qry = '''
with
qry_1 as (
SELECT test.ID,
NAME
FROM ( ... other code...
),
qry_2 as (
SELECT ID,
NAME
FROM (...other code...
),
qry_3 as (
SELECT WEATHER
FROM (...other code..
)
'''
r = sum(len(re.findall('^\w+|(?:ID|NAME)|(?<=\.)(?:ID|NAME)', i)) > 1 for i in re.findall('\w+\sas\s\([\s\w\.,\n]+', qry))
输出:
2
如果要将SQLcte
查询名称与select
语句中的ID相关联:
r = [re.findall('^\w+|(?:ID|NAME)|(?<=\.)(?:ID|NAME)', i) for i in re.findall('\w+\sas\s\([\s\w\.,\n]+', qry)]
d = {a:None if not b else b for a, *b in r}
输出:
{'qry_1': ['ID', 'NAME'], 'qry_2': ['ID', 'NAME'], 'qry_3': None}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句