mirror of
https://gitee.com/dromara/hutool.git
synced 2026-02-09 09:16:26 +08:00
Fix issue 4200
This commit is contained in:
@@ -33,7 +33,7 @@ public class SqlUtil {
|
||||
/**
|
||||
* SQL中的in语句部分的正则
|
||||
*/
|
||||
private static final Pattern PATTERN_IN_CLAUSE = PatternPool.get("\\s+in\\s+[(]", Pattern.CASE_INSENSITIVE);
|
||||
private static final Pattern PATTERN_IN_CLAUSE = PatternPool.get("\\s+in\\s+[(]\\s*$", Pattern.CASE_INSENSITIVE);
|
||||
|
||||
/**
|
||||
* 构件相等条件的where语句<br>
|
||||
|
||||
69
hutool-db/src/test/java/cn/hutool/db/sql/Issue4200Test.java
Normal file
69
hutool-db/src/test/java/cn/hutool/db/sql/Issue4200Test.java
Normal file
@@ -0,0 +1,69 @@
|
||||
package cn.hutool.db.sql;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class Issue4200Test {
|
||||
|
||||
/**
|
||||
* issues中提及的SQL
|
||||
*/
|
||||
private final static String TEST_SQL = "select case when 1 in (1) and 2 = any(:number) then 1 else 0 end";
|
||||
|
||||
|
||||
/**
|
||||
* 基础测试:in子句测试
|
||||
*/
|
||||
@Test
|
||||
public void isInClauseTest0() {
|
||||
final String sql = "select case when 1=1 and 2 in ( ";
|
||||
assertTrue(SqlUtil.isInClause(sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* 基础测试:in子句测试
|
||||
*/
|
||||
@Test
|
||||
public void isInClauseTest1() {
|
||||
final String sql = "select case when 1=1 and 2 in (";
|
||||
assertTrue(SqlUtil.isInClause(sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* 基础测试:非in子句测试
|
||||
*/
|
||||
@Test
|
||||
public void isInClauseTest2() {
|
||||
// 测试基本的ORDER BY移除
|
||||
//final String sql = "select case when 1 in (1) and 2 = any(:number) then 1 else 0 end";
|
||||
final String sql = "select case when 1=1 and 2 = any(";
|
||||
|
||||
assertFalse(SqlUtil.isInClause(sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试 包含in但非param对应的in子句测试
|
||||
*/
|
||||
@Test
|
||||
public void isInClauseTest3() {
|
||||
// 截断前sql
|
||||
//final String sql =
|
||||
final String sql = "select case when 1 in (?,?,?) and 2 = any(";
|
||||
|
||||
assertFalse(SqlUtil.isInClause(sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试 包含in但非param对应的in子句测试
|
||||
*/
|
||||
@Test
|
||||
public void isInClauseTest4() {
|
||||
// 截断前sql
|
||||
//final String sql =
|
||||
final String sql = "select case when 1 in (?,?,?) and 2 = any(";
|
||||
|
||||
assertFalse(SqlUtil.isInClause(sql));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user