dongyan3616 2015-02-04 16:30
浏览 321
已采纳

数据库命名的正则表达式

I've thousand of queries I need to execute from a text file.

See bellow a kind of query I have:

SELECT * 
    FROM T1 A 
    INNER JOIN DB2.dbo.CI_T1 B ON A.id= B.id 
    LEFT OUTER JOIN T3 C ON B.id = C.id
    WHERE ...

Some of tables are well named (database.owner.table_name), and some other no (table_name).

How can I use a regex to update each query to replace unqualified instances of table_name with database.owner.table_name?

I write fiddle to test it: http://www.phpliveregex.com/p/9SH and http://www.phpliveregex.com/p/9SF

  • 写回答

2条回答 默认 最新

  • douzhe1264 2015-02-09 12:04
    关注

    In the end I use following regex with preg_replace function:

    $regex = '#(FROM)\s+((?!\.)[[:alnum:]_]+)\s+(\w*)\s*(INNER|LEFT|WHERE|\))#i';
    $regex2 = '#(JOIN)\s+((?!\.)[[:alnum:]_]+)\s+(\w*)\s*(ON)#i';
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题