当前位置:  开发笔记 > 编程语言 > 正文

正则表达式查找查询中的所有表名

如何解决《正则表达式查找查询中的所有表名》经验,为你挑选了2个好方法。

我对正则表达式并不热衷,它让我的小脑袋融化了一些东西.

我试图在查询中找到所有表名称.所以说我有查询:

SELECT one, two, three FROM table1, table2 WHERE X=Y

我想拉出"table1,table2"或"table1"和"table2"

但是,如果没有where声明怎么办?它可能是文件的结尾,或者可能有一个组或一个顺序等.我知道"大多数"时间这不会是一个问题,但我不喜欢编码"最"的想法情况和知道我留下了一个可能导致事情出错的漏洞.

这是一个可行的正则表达式吗?我是正则表达式吗?

(PS这将在C#中完成,但假设无关紧要).



1> Joel Coehoor..:

RegEx对此并不是很擅长,因为它比看起来要复杂得多:

如果他们使用LEFT/RIGHT INNER/OUTER/CROSS/MERGE/NATURAL连接而不是a,b语法怎么办?无论如何都应该避免使用a,b语法.

嵌套查询怎么样?

如果没有表(选择常量)怎么办?

换行和其他空白格式怎么样?

别名?

我可以继续

你可以做的是寻找一个SQL解析器,并通过它运行您的查询.



2> Stefan Gehri..:

一切都谈到了这种正则表达式在SQL上下文中的用处。如果您坚持使用正则表达式并且您的SQL语句始终看起来像您所显示的那样(这意味着没有子查询,联接等),则可以使用

FROM\s+([^ ,]+)(?:\s*,\s*([^ ,]+))*\s+ 

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有