Java UcanaccessSQLException:UCAExc:::3.0.1表达式的数据类型不是布尔型

Java UcanaccessSQLException:UCAExc:::3.0.1表达式的数据类型不是布尔型,java,regex,ucanaccess,Java,Regex,Ucanaccess,我有一张如下图所示的桌子 我需要得到库尔德语中包含“بةز”的所有英语单词, 所以我不能用 select English from Table1 where Kurdish like '%بةرز%'; 因为它也接受像这样的另一个单词的子字符串 , 当我尝试在查询中使用正则表达式时: query = "SELECT English FROM Table1 WHERE Kurdish REGEXP '^[.، ]*("+"بةرز" +")[ ،.]*$'"; s.execute(query)

我有一张如下图所示的桌子

我需要得到库尔德语中包含“بةز”的所有英语单词,
所以我不能用

select English from Table1 where Kurdish like '%بةرز%';
因为它也接受像这样的另一个单词的子字符串 ,
当我尝试在查询中使用正则表达式时:

query = "SELECT English FROM Table1 WHERE Kurdish REGEXP '^[.، ]*("+"بةرز" +")[ ،.]*$'";
s.execute(query);

它显示以下异常

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.1 data type of expression is not boolean
我的正则表达式有问题吗?
请注意,我将UCanAccess用于数据库连接,而不是

columnName REGEXP'模式'
我相信你需要使用

REGEXP\u匹配(列名称,'pattern')
这似乎对我有用

String targetString=“بةز”;
try(PreparedStatement ps=conn.PreparedStatement(
“从表1中选择英语”+
“库尔德人=?”+
“或REGEXP_匹配(库尔德语,”)+
“或REGEXP_匹配(库尔德语,”)+
“或REGEXP_匹配(库尔德语,”){
ps.setString(1,targetString);
ps.setString(2,“^”+targetString+”[.،]+.*);
ps.setString(3,“.[.،]+”+targetString+“$”;
ps.setString(4,“.[.،]+”+targetString+“[.،]+.”;
try(ResultSet rs=ps.executeQuery()){
while(rs.next()){
System.out.println(rs.getString(1));
}
}
}

。。。尽管可能有一种更优雅的方法。

另一种解决方案可能是使用基于正则表达式的条件的like子句(但我不能说它是否优雅,它只是与访问兼容,并由access和ucanaccess支持)。请看这里:非常感谢,它与一些编辑
ps.setString(1,targetString)一起工作得很好;ps.setString(2,“^[.]*”+targetString+“[]*[:،,]+[.]*$”;ps.setString(3,“^[.]*[:،,]+[]*”+targetString+“[.]*$”;ps.setString(4,“^[.]*[:،,]+[]*”+targetString+“[]*[:،,]+[.]*$”