使用正则表达式解析WHERE条件

时间:2014-07-09 09:40:38

标签: sql regex

我想知道是否有人可以帮助我使用正则表达式 - 而不是我的最强点 - 来解析SQL语句的WHERE部分。我需要以“column”或“table.column”格式提取列名。我正在使用MySQL和PHP。

例如,解析:

(table.column_a = '1') OR (table.column_a = '0')) 
AND (date_column < '2014-07-03') 
AND column_c LIKE '%my search string%'

应该产生

table.column_a
table.column_b
date_column
column_c

编辑:澄清 - 将使用preg_ *函数在PHP中解析字符串!

谢谢!

1 个答案:

答案 0 :(得分:3)

假设你没有在SQL中这样做,你可以使用这样的正则表达式:

[A-Za-z._]+(?=[ ]*(?:[<>=]|LIKE))

请参阅regex demo

这适用于Notepad ++和许多语言。

<强>解释

  • [A-Za-z._]+匹配您单词中的字符(如果您想添加数字,请添加0-9
  • 前瞻(?=[ ]*(?:[<>=]|LIKE))断言接下来是可选空格(括号是可选的,它们使空格突出),然后是这个类[<>=]中的一个字符(运算符OR {{ 1}} |
  • 您可以在LIKE内添加运算符,或者在最后使用其他替换标记它们,例如[<>=]

<强>参考