首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPA/Criteria API - NotLike

JPA/Criteria API - NotLike
EN

Stack Overflow用户
提问于 2018-09-16 20:11:12
回答 1查看 232关注 0票数 2

我想使用谓词notLike(表达式x,字符串模式)来替换以下查询:

代码语言:javascript
复制
select * from mytable
where mytable.myParameter not in ('ABC%','XYZ');

但是当我使用以下谓词执行查询时:

代码语言:javascript
复制
Predicate notLike = builder.notLike(fromMyTable.get(MyTable_.myParameter), "ABC%|BCD");

不起作用。

但是如果我为这两个字符串创建两个谓词:"ABC%“和"XYZ”是有效的。

是我的模式写错了,还是问题出在哪里?我尝试了很多方法来改变模式,但仍然不起作用。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-09-16 20:30:31

In SQL A not in (X,Y,Z) predicate是以下条件的快捷方式:

代码语言:javascript
复制
A <> X AND A <> Y AND A <> Z

此条件使用“不等于”运算符,该运算符比较精确不相等的操作数。

不能使用INNOT IN运算符进行模式匹配。

您必须使用支持模式匹配的LIKE运算符重写查询:

代码语言:javascript
复制
select * from mytable
where mytable.myParameter not in ('XYZ')
  and mytable.myParameter not LIKE 'ABC%';

代码语言:javascript
复制
select * from mytable
where mytable.myParameter <> 'XYZ'
  and mytable.myParameter not LIKE 'ABC%';
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52353992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档