Hibernate 检查数字是否在字符串中

Hibernate 检查数字是否在字符串中,hibernate,jpa,querydsl,Hibernate,Jpa,Querydsl,我有一个类似于1-2-55-9的varchar字段,数字由- 如何在hibernate或querydsl或jpa中进行查询以检查此字段中是否有数字 select * from x where TEST 例如,如果55->yes return record,5->no,7->no您的问题有一些解决方案,最佳解决方案取决于varchar的所有可能值。 通常,您需要使用字符串模式匹配 假设varchar包含: 1-2-55-9 7-8-55-5 3-A-55-4 您可以使用以下字符串模式: _-_

我有一个类似于1-2-55-9的varchar字段,数字由-

如何在hibernate或querydsl或jpa中进行查询以检查此字段中是否有数字

select * from x where TEST

例如,如果55->yes return record,5->no,7->no

您的问题有一些解决方案,最佳解决方案取决于varchar的所有可能值。 通常,您需要使用字符串模式匹配

假设varchar包含:

1-2-55-9
7-8-55-5
3-A-55-4
您可以使用以下字符串模式:

_-_-55-_  // underscore wildcard character _ substitutes a single character
但是,在以下情况下,它将停止工作:

1-2-55-99
1-22-55-9
11-2-55-99
123-200-55-A
为了更灵活,您可以将上面的字符串模式替换为

%-%-55-%  // percent wildcard character % substitutes multiple characters
正如上面注释中所建议的,类似JPQL的表达式是您应该遵循的方式,例如:

从MyEntity e中选择e,其中e.varchar类似于''.-'-55-'-或'%-%-55-'' 您还可以选择使用JPQL局部表达式进行实验,例如:

从MyEntity e中选择e,其中位于'-55-',e.varchar,3>0
使用这两个查询,您可能会看到性能、灵活性以及JPA如何将给定查询转换为本机SQL方面的差异。

一个数字?什么号码?你的意思是如果这个字符串的第三个组成部分是一个特定的数字?看看类似JPQL的关键字我在问题中举了一个例子一个例子?你是说55岁是你的例子?在你的例子中,你没有说数字的哪一部分必须是55。如前所述,查看JPQL关键字,如示例1-2-55-9,如果我们拆分此字符串,我们得到1 2 55 9,否,我想搜索此字段是否包含数字5或其依赖于查询参数的任何其他数字