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语句部分的正则
|
* 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>
|
* 构件相等条件的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