【问题标题】:UcanaccessSQLException: UCAExc:::3.0.1 data type of expression is not booleanUcanaccessSQLException:UCAExc:::3.0.1 数据类型的表达式不是布尔值
【发布时间】:2016-01-21 19:27:24
【问题描述】:

我有一张如下图所示的表格

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

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 进行数据库连接

【问题讨论】:

    标签: java regex ucanaccess


    【解决方案1】:

    代替

    columnName REGEXP 'pattern'
    

    相信你需要使用

    REGEXP_MATCHES(columnName, 'pattern')
    

    这似乎对我有用......

    String targetString = "بةرز";
    try (PreparedStatement ps = conn.prepareStatement(
            "SELECT English FROM Table1 " +
            "WHERE Kurdish = ? " +
                "OR REGEXP_MATCHES(Kurdish, ?) " +
                "OR REGEXP_MATCHES(Kurdish, ?) " +
                "OR REGEXP_MATCHES(Kurdish, ?) ")) {
        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 支持)。见这里:stackoverflow.com/questions/29583752/…
    • 非常感谢,经过一些编辑ps.setString(1, targetString ); ps.setString(2, "^[. ]*" + targetString + "[ ]*[:،,]+[ .]*$"); ps.setString(3, "^[. ]*[:،,]+[ ]*" + targetString + "[. ]*$"); ps.setString(4, "^[. ]*[:،,]+[ ]*" + targetString + "[ ]*[:،,]+[ .]*$"); 效果很好
    猜你喜欢
    • 2010-09-20
    • 2011-05-25
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 2015-04-22
    • 2011-12-18
    • 1970-01-01
    相关资源
    最近更新 更多