日期:2014-05-16  浏览次数:20483 次

oracle关于模糊查询的问题
以前模糊查询使用的是:like
例如(Schema KMH_QC):
    select v.unitprice, v.unit, v.STORAGE, v.stationeryname, v.stationeryid,
           v.modelsize, v.classname, v.classid
    FROM v_wjqc_storage v
    where v.stationeryname LIKE '%'||#stationeryName#||'%';
问题:当传递进去的stationeryName值是'%'或者'_'时,它会查出所有信息。
解决方案:条件换为:instr(v.stationeryname,#stationeryName#) > 0
'_'通配一个字符,'%'通配N个字符,这是SQL的基本语法就有!

例如:传入参数为"_成_",表达的意思是查找三个字的,并且中间那个字是"成"的."_"可以出现多次,每出现一次代通配一个字符.
传入参数为"%成",表达的意思是最后个字是为"成"的.
传入参数为"%成%",表达的意思是只要包含"成"的都显示.
传入参数为"成%",表达的意思是第一个字是为"成"的.

同时"%"和"_"还可以配合使用:
例如:
传参数为"_成%"表示第二字为"成"的都显示.
非常灵活,自由组合.