浏览代码

过滤条件支持sqlserver系统函数

Signed-off-by: AE86 <836391306@qq.com>
AE86 1 年之前
父节点
当前提交
ed1b799df3

+ 2 - 0
dbsyncer-common/src/main/java/org/dbsyncer/common/util/StringUtil.java

@@ -4,6 +4,8 @@ import org.apache.commons.lang3.StringUtils;
 
 public abstract class StringUtil {
 
+    public static final String EMPTY = "";
+
     public static boolean equals(CharSequence cs1, CharSequence cs2) {
         return StringUtils.equals(cs1, cs2);
     }

+ 2 - 2
dbsyncer-connector/src/main/java/org/dbsyncer/connector/oracle/OracleConnector.java

@@ -99,10 +99,10 @@ public final class OracleConnector extends AbstractDatabaseConnector {
             // 支持Oracle系统函数(to_char/to_date/to_timestamp/to_number)
             String val = value.toLowerCase();
             if (StringUtil.startsWith(val, "to_") && StringUtil.endsWith(val, ")")) {
-                return "";
+                return StringUtil.EMPTY;
             }
         }
-        return super.buildSqlFilterWithQuotation(value);
+        return buildSqlWithQuotation();
     }
 
     @Override

+ 12 - 0
dbsyncer-connector/src/main/java/org/dbsyncer/connector/sqlserver/SqlServerConnector.java

@@ -45,6 +45,18 @@ public final class SqlServerConnector extends AbstractDatabaseConnector {
         return new Object[]{(pageIndex - 1) * pageSize + 1, pageIndex * pageSize};
     }
 
+    @Override
+    protected String buildSqlFilterWithQuotation(String value) {
+        if (StringUtil.isNotBlank(value)) {
+            // 支持SqlServer系统函数(convert/varchar/getdate)
+            String val = value.toLowerCase();
+            if (StringUtil.contains(val, "convert") || StringUtil.contains(val, "varchar") || StringUtil.contains(val, "getdate")) {
+                return StringUtil.EMPTY;
+            }
+        }
+        return buildSqlWithQuotation();
+    }
+
     @Override
     protected String getQueryCountSql(CommandConfig commandConfig, String schema, String quotation, String queryFilterSql) {
         // 视图或有过滤条件,走默认方式