これは古い質問ですが、Javaでコーディングしていてこの問題が発生した場合は、これが役立つ可能性があります。同様のチェックを行う関数を登録できます。私はこの投稿からヒントを得ました:https ://stackoverflow.com/a/29831950/1271573
sqlite jdbcに依存するソリューション:https ://mvnrepository.com/artifact/org.xerial/sqlite-jdbc
私の場合、特定の文字列が別の文字列('%mystring%'など)の一部として存在するかどうかを確認するだけでよいので、Contains関数を作成しましたが、これを拡張してSQLのようなチェックを行うことができるはずです。正規表現などを使用します。
SQLで関数を使用して、MyColに「searchstring」が含まれているかどうかを確認するには、次のようにします。
select * from mytable where Contains(MyCol, 'searchstring')
これが私のContains関数です:
public class Contains extends Function {
@Override
protected void xFunc() throws SQLException {
if (args() != 2) {
throw new SQLException("Contains(t1,t2): Invalid argument count. Requires 2, but found " + args());
}
String testValue = value_text(0).toLowerCase();
String isLike = value_text(1).toLowerCase();
if (testValue.contains(isLike)) {
result(1);
} else {
result(0);
}
}
}
この機能を使用するには、最初に登録する必要があります。使い終わったら、オプションで破棄できます。方法は次のとおりです。
public static void registerContainsFunc(Connection con) throws SQLException {
Function.create(con, Contains.class.getSimpleName(), new Contains());
}
public static void destroyContainsFunc(Connection con) throws SQLException {
Function.destroy(con, Contains.class.getSimpleName());
}