简单易懂哦!!!
select ID from VULN_INFO
where if(001 != '1'|| 001 != '001',VULN_ID = '001',VULN_ID like '%')and if(001 != '1',CVSS_VECTOR like '002%',like '%')
and if(?!= '1' ,?< CVSS_SEVERITY, CVSS_SEVERITY like '%')
and if(severity_score_min != '1' ,severity_score_max > CVSS_SEVERITY, CVSS_SEVERITY like '%')
and if(severity_score_min != '1' ,severity_score_max > CVSS_SEVERITY, CVSS_SEVERITY like '%')
and if(severity_score_min != '1' ,severity_score_max > CVSS_SEVERITY, CVSS_SEVERITY like '%')
and if(001 != '1',VULN_ID = '002',VULN_ID ='001')
但是为了效率最好放在java里面写。
也就是通过Stringbuilder 字符串的拼接方法,在sql的字符串中,来判断是否为空,然后在通过 append 来一个一个的追加,或者不追加。
还有例如 like 的"%" 最好在传参数的时候给他加上,就是避免 sql文中有过多的操作,因为DB的操作是很慢的。
但是如果sql文比较长,判断条件比较多写起来就比较复杂了,这时候可以使用mybatis框架,使用它的动态sql文,写起来就是so easy了。哈哈。。