我想要提取SQL字符串的部分,如下所示:
SELECT *,somecolumn, anothercolum FROM sometable INNER JOIN anotherTable WHERE somecolumn>1
变量中的:
aVariable = "*,somecolumn, anothercolum";
anotherVariable = "sometable INNER JOIN anotherTable";
Vaiable = "somecolumn>1";
我试过这个(在JavaScript中):
/SELECT\s(\*|[\w\,\_\d]+)\sFROM\s([\w\,\_]]+)(?:\s(.*))
但它失败了INNER JOIN
。
答案 0 :(得分:0)
/SELECT\s(.*?)\sFROM\s((?!WHERE|ORDER BY|GROUP BY).*?)(?:WHERE\s|ORDER BY\s|GROUP BY\s|\Z)(.*)/
答案 1 :(得分:0)
试试这个:
var reg =/^(\s*select\s+)(\w+(\s+as\s+\w+\s*)?||\[\s*\w+\s*\](\s+as\s+\w+\s*)?||\*\s*)(\s*\,\s*\w+(\s+as\s+\w+\s*)?||\s*\,\s*\[\s*\w+\s*\](\s+as\s+\w+\s*)?)*(\,\*)?(\s+from\s+)\w+\s*(\s+where\s+\[?\s*\w+\s*\]?\s*((\+||\-||\*||\/||\%||\^||(\>\=)||(\<\=)||\=||\>||\<)\s*\[?\s*\w+\s*\]?)?(\s+and\s+\[?\s*\w+\s*\]?\s*((\+||\-||\*||\/||\%||\^||(\>\=)||(\<\=)||\=||\>||\<)\s*\[?\s*\w+\s*\]?)?(\s+and\s+\[?\s*\w+\s*\]?\s+like\s+\'\%?\s*\w+\W*\w+\s*((\+||\-||\*||\/||\%||\^||(\>\=)||(\<\=)||\=||\>||\<)\s*\w+)?\%?\')?)*\s*)?(\s+order\s+by\s+(\w+\s*((\+||\-||\*||\/||\%||\^||(\>\=)||(\<\=)||\=||\>||\<)\s*\w+)?(\s+desc||\s+asc)*)(\,\w+((\+||\-||\*||\/||\%||\^||(\>\=)||(\<\=)||\=||\>||\<)\w+)?(\s+desc||\s+asc)*)*)?(\s+group\s+by\s+\w+(\,\w+)?(\s+having\s+\w+(\s*(\+||\-||\*||\/||\%||\^||(\>\=)||(\<\=)||\=||\>||\<)\s*\w+)?(\s*\,\s*\w+\s*((\+||\-||\*||\/||\%||\^||(\>\=)||(\<\=)||\=||\>||\<)\s*\w+)?)?)?)?\s*$/g;