分析sql语句所有表名及其别名的正则表达式
2016-09-19 23:46
501 查看
最近为了 写一个分布式的数据组件构想了很多的方案,最近一个简单易行的方案终于在脑袋里成型。昨晚想到凌晨1点多,发现方案虽简单,但所有的数据库工具就不能使用了 。除非自己写一下查询分析器来执行程序员自己的维护语句。
说做就做,事情也出乎顺利,居然半天时间做了一个基本的版本出来了:)
于是就想想能否加上智能提示字段。似乎难在分析程序员录入的语法。当然说白了也简单就是取出表的别名。家里的空调没钱换,为了省100大元,还要晚几天才有得用。于是今晚继续晚点睡,把这个正则表达式弄出来,明天上班就能继续开发查询分析器了。
事情也没有想象的复杂,不到半小时,正则表达式整理出来了。利用下面的两个正则应就能分析出语法中的表名和其别名
为了测试方便我使用了Combox来保存整理出来的表达式,于是取所有表和别名的代码是这样的
以下是我用于测试的sql
最后是我测试的小程序的截图
说做就做,事情也出乎顺利,居然半天时间做了一个基本的版本出来了:)
于是就想想能否加上智能提示字段。似乎难在分析程序员录入的语法。当然说白了也简单就是取出表的别名。家里的空调没钱换,为了省100大元,还要晚几天才有得用。于是今晚继续晚点睡,把这个正则表达式弄出来,明天上班就能继续开发查询分析器了。
事情也没有想象的复杂,不到半小时,正则表达式整理出来了。利用下面的两个正则应就能分析出语法中的表名和其别名
\s+from\s+(\w+)\s+(\w+)\s+(where|left|join|inner) \s+join\s+(\w+)\s+(\w+)\s+on
为了测试方便我使用了Combox来保存整理出来的表达式,于是取所有表和别名的代码是这样的
DataTable table = new DataTable(); table.Columns.Add("tableName"); table.Columns.Add("aliasName"); foreach (string str in this.comboBox1.Items) { Regex reg = new Regex(str); MatchCollection mces = reg.Matches(this.richTextBox1.Text); foreach (Match mc in mces) { DataRow row = table.NewRow(); row["tableName"] = mc.Groups[1].Value; row["aliasName"] = mc.Groups[2].Value; table.Rows.Add(row); } } this.dataGridView1.DataSource = table.DefaultView;
以下是我用于测试的sql
select * from Outvisit l left join patient p on l.patid=p.patientid join patstatic c on l.patid=c.patid inner join patphone ph on l.patid=ph.patid where l.name='kevin' and exsits(select 1 from pharmacywestpas p where p.outvisitid=l.outvisitid) unit all select * from invisit v where
最后是我测试的小程序的截图
相关文章推荐
- SQL语句正则表达式 匹配(获取) 所有表名
- 【正则】构造复杂SQL语句的正则表达式2(粗粒度分析)
- 使用正则表达式检验sql语句(只支持select(不含函数,子
- 【正则】构造复杂SQL语句的正则表达式1
- JS、replace 利用正则表达式 ,一次性替换SQL所有参数为数据
- 使用正则表达式获取Sql查询语句各项(表名、字段、条件、排序)
- 正则表达式所有元字符及其使用方法一览表
- 在Sql语句中使用正则表达式来查找你所要的字符
- python正则表达式匹配sql语句中的表名
- 匹配参数JS、replace 利用正则表达式 ,一次性替换SQL所有参数为数据
- 分析各类浏览器的userAgent信息,不难得出分辨各类浏览器及其版本的正则表达式。
- 在SQL语句中使用正则表达式
- 在Sql语句中使用正则表达式来查找你所要的字符
- 【正则】构造复杂SQL语句的正则表达式3(细粒度正则匹配)
- sql工具:一条sql语句,查询sql server某个指定表的所有列及其属性
- 【SQL精彩语句】SQL SERVER 2000中查询指定节点及其所有子节点的函数(表格形式显示)
- 在Sql语句中使用正则表达式来查找你所要的字符 及调试问题
- SqlServer2005数据库查找所有表和字段及其属性和约束的sql语句
- 【SQL精彩语句】SQL SERVER 2005中查询指定节点及其所有子节点的方法(表格形式显示)
- sql语句中使用正则表达式