当前位置: 代码迷 >> C# >> 检索式 输入一字符串解析成sql语句(呀,脑袋实在想不出来了)
  详细解决方案

检索式 输入一字符串解析成sql语句(呀,脑袋实在想不出来了)

热度:72   发布时间:2016-05-05 03:14:23.0
检索式 输入一字符串解析成sql语句(求救呀,脑袋实在想不出来了)
((lung OR cancer) AND (man OR women) AND ((baby OR adult) AND liver NOT human)) NOT man


第一步: lung OR cancer
第二步: man OR women
第三步: baby OR adult
第四步: (baby OR adult) AND liver NOT human
第五步: 第一步 and 第二部 and 第五步
第六步: NOT man

相当于一个sql语句一步一步的吧结果细化下去,跟过滤器一样,


------解决思路----------------------
就是循环拼接字符串,可以这样
先写一个变量 sql = 'select * from xxx where 1=1'
然后后面就是一堆if条件
if xxx 
sql = sql + ' and xxx'
if xxx
sql = sql + ' and xxx'
------解决思路----------------------
查下正则平衡组……然后去思考在按花括号成功取出的基础上再怎么弄
------解决思路----------------------
另外你这个相当于做一个SQL翻译代码,MSSQL安装怎么也有那么大,你觉得你能做一个完整的解释代码出来吗?
------解决思路----------------------
你首先需要知道“词法分析”这个关键字,了解BNF,EBNF
然后需要知道“yacc”,“irony”,“Antlr” 这几个常用的工具

ps:无论是yacc,还是irony,还是antlr 对于解析sql为语法树其实早就很成熟了,在顺带提一下dynamiclinq这个项目其实也是一样能解的
------解决思路----------------------
呵呵,本版版主以前提过滴最新滴net主框架功能之一Roslyn,其实也能解这问题
  相关解决方案