解析sql中的表名
Posted jt_Huang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解析sql中的表名相关的知识,希望对你有一定的参考价值。
最近的项目需求中需要解析sql得表名,由于只需要表名我觉得应该用相对粗暴一点的方式来解析
初步思路:
1.转义字符:去除两个引号连在一起的
2.字符串: 去除所有被引号包裹的
3.括号:识别括号处理
4.关键字: 用关键字切割语句,去除与表名 无关的
5.解析与表名有关的切割分段得表名
先是粗暴的括号处理
def get_str(s):
you = 0
st = []
re = ‘‘
max_you = 0
for ii in s:
st.append(ii)
while st:
tmp = st.pop()
re = tmp + re
if tmp == ‘)‘:
you += 1
if max_you < you:
max_you = you
elif tmp == ‘(‘:
you -= 1
if you == 0:
return [re, max_you]
return [s, max_you]
s = "(1,2,(a,b),3,4,(a,b,(0,c,s,1000),(1,a,1200),(2,1400),(3,1600),(4,1800),n,m),((sd,df),(sw,gt))t,b)"
array = []
array_level = []
for ch in range(len(s)):
if s[ch] == ‘)‘:
next_str = get_str(s[:ch+1])
while len(array_level) < next_str[1]:
array_level.append([])
array.append(next_str[0])
array_level[next_str[1]-1].append(next_str[0])
print array
print ‘-‘ * 60
for i in array_level:
print i
以上是关于解析sql中的表名的主要内容,如果未能解决你的问题,请参考以下文章