左连接不能与or否则in连用

select 
z.sjssny,z.XXSE,z.JXSE,z.nsrsbh,
nsr.zgswskfj_dm,nsr.nsrmc,nsr.zgswj_dm,nsr.SSGLY_DM,nsr.nsrsbh
from T_ZZS_ZXSSR z,hx_dj.dj_nsrxx nsr
where z.nsrsbh(+) = nsr.nsrsbh     即使这个连接语句写到了where其他过滤条件后面,仍然先执行的是这条连接语句。有时候发现执行了左连接查出的数据量仍然不够多,可能就是因为先执行了连接语句,得出了很多数据,但是后面接着执行的条件又将很多数据都过滤掉了
and to_date(z.sjssny,'yyyyMM') >=
add_months(to_date('201701','yyyyMM'),-months_between(to_date('201707','yyyyMM'),to_date('201701','yyyyMM'))-1)

and to_date(z.sjssny,'yyyyMM') <= add_months(to_date('201701','yyyyMM'),-1)
AND nsr.ZGSWSKFJ_DM LIKE '13609%'
--or z.sjssny is null               左连接不能与or否则in连用。

转载于:https://www.cnblogs.com/shenzhichipingguo/p/8797483.html

### 回答1: 是的,可以将LIKE和IN运算符连用。比如: ``` SELECT * FROM table_name WHERE column_name LIKE '%abc%' AND column_name IN ('value1', 'value2'); ``` 这个查询语句会返回符合条件的行,即列column_name包含字符串'abc'并且列column_name的值为'value1'或'value2'的所有行。 ### 回答2: 在SQL查询中,LIKE和IN是两个不同的操作符,通常不能直接连用。 LIKE用于模糊匹配,可以在WHERE子句中用来搜索与指定模式相匹配的字符串。例如,可以使用LIKE来查找姓氏以"B"开头的所有人:WHERE 姓名 LIKE 'B%' IN则用于指定一个值列表,用来匹配某个字段是否属于该值列表中的任何一个值。例如,可以使用IN来查找性别为男或女的人:WHERE 性别 IN ('男', '女') 尽管LIKE和IN都用于WHERE子句,但它们的语义和用法是不同的,因此通常不能直接将它们连用。 然而,有时候可以将LIKE和IN结合使用,以实现一些特定的查询需求。比如,可以使用子查询和LIKE来实现类似IN的功能。例如,可以使用LIKE来模糊匹配一个字段是否包含在一个子查询结果中的任何一个值: SELECT * FROM 表名 WHERE 字段名 LIKE (SELECT 字段名 FROM 子查询表名) 通过这种方式,可以间接地将LIKE和IN连用,实现一些特定的查询需求。但需要注意的是,这种使用方式可能会影响查询性能,因此在实际开发中应慎重使用。 ### 回答3: 在SQL中,LIKE和IN是两个不同的操作符,可以在同一查询中连用。 LIKE操作符用于在WHERE子句中模糊匹配字符串。它通常与通配符(如%或_)一起使用,以便在搜索中匹配特定模式。例如,可以使用LIKE操作符查询所有名称以"A"开头的行: SELECT * FROM table_name WHERE column_name LIKE 'A%' IN操作符用于在WHERE子句中指定多个条件,以便在查询中匹配多个值。它通常与子查询或值列表一起使用,以便在一个查询中筛选多个值。例如,可以使用IN操作符查询所有名字是"A"或"B"的行: SELECT * FROM table_name WHERE column_name IN ('A', 'B') 当需要同时使用LIKE和IN操作符时,可以在子查询中使用LIKE操作符,然后将结果用IN操作符进行筛选。例如,可以查询所有名字以"A"或"B"开头的行: SELECT * FROM table_name WHERE column_name LIKE 'A%' OR column_name LIKE 'B%' 然后使用IN操作符对结果进行筛选,例如只选择其中某些特定的名字: SELECT * FROM (SELECT * FROM table_name WHERE column_name LIKE 'A%' OR column_name LIKE 'B%') AS subquery WHERE column_name IN ('A', 'B')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值