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

sql in 模糊查询 求方法
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 模糊查询 求方法的主要内容,如果未能解决你的问题,请参考以下文章

关于sql语句模糊查询

SQL多表模糊查询

sql语句中条件查询里in、like、及=三个的效率怎么样?

SQL 怎么实现模糊查询?

C# Access 模糊查询SQL语句

SQL多个条件模糊查询问题。。。