从java在SQL中进行模式匹配

从java在SQL中进行模式匹配,java,string,Java,String,我在postgres表中的一列中有一条记录,如下所示 id subtype 1 type=[ep,hh]~region=[EU,NA]~version=[16,17] 当子类型作为type=[ep]~region=[NA]~version=[17] 我希望id返回为1。我可以将like子句与%一起使用,并拥有一个模板,有没有更好的方法 我本来打算这么做的 Select id from table_name where subtype like 'type=[%EP%]~regi

我在postgres表中的一列中有一条记录,如下所示

id   subtype 
1    type=[ep,hh]~region=[EU,NA]~version=[16,17]
当子类型作为
type=[ep]~region=[NA]~version=[17]
我希望id返回为1。我可以将like子句与
%
一起使用,并拥有一个模板,有没有更好的方法

我本来打算这么做的

Select id 
from table_name 
where subtype like 'type=[%EP%]~region=[%NA%]~version=[%17%]'
虽然从sql中它可能会起作用,但当我用Java构造查询字符串时,我得到了一个格式异常。这就是我正在做的

String SUB_TYPE_TEMPLATE ="Type=[%%s%]~Region=[%%s%]~Version=[%%s%]";
String subType = String.format(SUB_TYPE_TEMPLATE,type,region,version);

此外,如果输入为type=[hh,ep]~ region=[NA,EU]~ version=[16,17],则条件仍应匹配。

格式字符串中的
%
具有特殊含义,因此必须对其进行转义:

String SUB_TYPE_TEMPLATE = "Type=[%%%s%%]~Region=[%%%s%%]~Version=[%%%s%%]";
String subType = String.format(SUB_TYPE_TEMPLATE, type, region, version);

谢谢,我正在转义,如果输入类型为type=[hh,ep]~region=[NA,EU]~version=[16,17],则条件仍应匹配。。我怎样才能做到这一点。。