oracle中like多个值

oracle中like多个值

千次阅读

2022-04-28 14:57:57

1.查询 md003 包含 LT或C或ST的数据

select * from sys_ggbom a 
where regexp_like (md003,'(LT|C|ST)')

2.查询 md003 以 HT 开头的数据

select * from sys_ggbom a 
where regexp_like (md003,'^(HT)')

3.查询 md003 以 HT 结尾的数据

select * from sys_ggbom a 
where regexp_like (md003,'(HT)$')

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Oracle的NOT LIKE操作符不能同时匹配多个。如果需要匹配多个,可以使用IN操作符或者正则表达式。例如: 使用IN操作符: SELECT * FROM table_name WHERE column_name NOT IN ('value1', 'value2', 'value3'); 使用正则表达式: SELECT * FROM table_name WHERE NOT REGEXP_LIKE(column_name, 'value1|value2|value3'); ### 回答2: 在Oracle,NOT LIKE运算符用于过滤不匹配指定模式的数据。但是,NOT LIKE运算符无法匹配多个,这意味着我们无法使用通配符来匹配多个。 例如,我们要查找所有姓氏不是“Smith”或“Johnson”的客户,使用以下查询: SELECT * FROM customers WHERE last_name NOT LIKE 'Smith%' AND last_name NOT LIKE 'Johnson%'; 在这个例子,我们使用NOT LIKE运算符来过滤姓氏是“Smith”或“Johnson”的客户。但这个查询只能过滤掉姓氏是“Smith”或“Johnson”的客户,而不能过滤姓氏是其他的客户。 如果我们想要使用NOT LIKE匹配多个,可以使用OR运算符和多个LIKE运算符来实现。例如: SELECT * FROM customers WHERE last_name NOT LIKE 'Smith%' OR last_name NOT LIKE 'Johnson%'; 在这个例子,我们使用OR运算符和两个LIKE运算符来过滤两个不同的姓名。这将过滤掉姓氏是“Smith”和“Johnson”的客户,并返回姓氏是其他的客户。 总之,NOT LIKE运算符不能匹配多个,但可以使用OR运算符和多个LIKE运算符来实现相同的效果。 ### 回答3: Oracle有一个运算符叫做“not like”,用于在查询语句获得与指定匹配模式不匹配的结果。例如,我们可以使用“not like”运算符从一个表获取除了特定字符串之外的所有记录。 但是,“not like”运算符只能匹配一个特定的字符串,而不能同时匹配多个。如果我们需要在查询匹配多个,我们需要使用其他的方法。 一种解决方案是使用“or”运算符连接多个“not like”条件。例如,我们可以使用以下查询来获取一个表不匹配3个不同字符串的所有记录: SELECT * FROM table_name WHERE column_name NOT LIKE '%string1%' OR column_name NOT LIKE '%string2%' OR column_name NOT LIKE '%string3%'; 然而,这种方法的缺点是,当我们需要匹配多个时代码会变得冗长且难以维护。 另一种解决方案是使用正则表达式来匹配多个Oracle提供了一个REGEXP_LIKE函数,可以用于在查询使用正则表达式。例如,我们可以使用以下查询来获取一个表不匹配任何字符串的所有记录: SELECT * FROM table_name WHERE NOT REGEXP_LIKE(column_name, 'string1|string2|string3'); 这个方法更简洁,可以轻松地匹配多个字符串。但是,正则表达式可能比普通查询更慢,因为它需要更多的计算能力。所以,我们需要在性能和可读性之间做出权衡。 综上所述,虽然Oracle的“not like”运算符不能同时匹配多个,但我们可以使用“or”运算符或正则表达式来处理这个问题。对于不同的需求和代码规模,我们可以选择更方便和性能更好的工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值