sql in 模糊查询 求方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql in 模糊查询 求方法相关的知识,希望对你有一定的参考价值。
SELECT sum(d.DebitAmount+d.CreditAmount) AS c
FROM PUB.GLJrnDtl d
LEFT JOIN PUB.GLAccount a ON a.Company=d.Company AND a.COACode=d.COACode AND a.GLAccount=d.GLAccount
WHERE a.AccountDesc IN ('%交通费%','%业招费%')
AND d.JEDate BETWEEN to_date('2012-01-01') AND to_date('2012-01-31')
AND d.Description<>'费用类自动结转'
GROUP BY a.AccountDesc
WHERE a.AccountDesc IN ('%交通费%','%业招费%')
IN是完全匹配的,所以你如果IN后面的内容很多的话,用 like 要写死人了,
首先把关键字提取出来保存到一个字段内,然后再用IN,我也遇到过这样的情况,就这样处理的。 参考技术A 你的 IN ('%交通费%','%业招费%') 是有问题的,% 只能用于like
应该写成 WHERE (a.AccountDesc like '%交通费%' or a.AccountDesc like '%业招费%')
AND d.JEDate BETWEEN to_date('2012-01-01') AND to_date('2012-01-31')追问
这样不是很麻烦 我这有很多个呢
追答这个是没有办法的,如果想用in 要看你的 交通费,业招费 等具体的 值了,
一般 我遇到这种情况 会使用
left(列,3) in ('交通费','业招费')
这样的思路和解决.
我查两个 值 分开的 你这样只有一个值啊
追答晕了,我现在给你说的是思路,不是具体解决过程.具体的解决过程要根据你 AccountDesc 的具体的值的情况分解才行的.
追问left(列,3) in ('交通费','业招费')
这个sql 没用过
看来 你是一个新手了
追问嗯 以前 都没写什么SQL 都是开发的
参考技术B a.AccountDesc IN ('%交通费%','%业招费%') 改为(a.AccountDesc Like '%交通费%' or a.AccountDesc Like '%业招费%')
SQL 的模糊查询的几种方式
1、使用’Like‘进行查询
语法: where <列名> [NOT] Like <字符表达式>
2、使用’in‘在限定值内进行查询
语法:where <列名> [NOT] IN <常量列表>
3、使用’Between···and···‘在指定范围内进行查询
语法:where <列名> [NOT] between <起始表达式> and <结束表达式>
以上是关于sql in 模糊查询 求方法的主要内容,如果未能解决你的问题,请参考以下文章