diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java b/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java index 59b0218383..6a5be2fc61 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/CustomWhere2Str.java @@ -9,6 +9,7 @@ import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.datasource.model.SQLMeta; import io.dataease.extensions.datasource.model.SQLObj; +import io.dataease.extensions.datasource.vo.DatasourceConfiguration; import io.dataease.extensions.view.filter.DynamicTimeSetting; import io.dataease.extensions.view.filter.FilterTreeItem; import io.dataease.extensions.view.filter.FilterTreeObj; @@ -167,7 +168,9 @@ public class CustomWhere2Str { if (StringUtils.equalsIgnoreCase(item.getFilterType(), "enum")) { if (ObjectUtils.isNotEmpty(item.getEnumValue())) { if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { res = "(" + whereName + " IN (" + item.getEnumValue().stream().map(str -> "'" + SQLConstants.MSSQL_N_PREFIX + str + "'").collect(Collectors.joining(",")) + "))"; } else { res = "(" + whereName + " IN ('" + String.join("','", item.getEnumValue()) + "'))"; @@ -193,14 +196,18 @@ public class CustomWhere2Str { whereValue = "''"; } else if (StringUtils.containsIgnoreCase(item.getTerm(), "in") || StringUtils.containsIgnoreCase(item.getTerm(), "not in")) { if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = "(" + Arrays.stream(value.split(",")).map(str -> "'" + SQLConstants.MSSQL_N_PREFIX + str + "'").collect(Collectors.joining(",")) + ")"; } else { whereValue = "('" + String.join("','", value.split(",")) + "')"; } } else if (StringUtils.containsIgnoreCase(item.getTerm(), "like")) { if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = "'" + SQLConstants.MSSQL_N_PREFIX + "%" + value + "%'"; } else { whereValue = "'%" + value + "%'"; @@ -246,7 +253,9 @@ public class CustomWhere2Str { } } else { if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE_CH, value); } else { whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE, value); diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java b/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java index 5618ef2d40..76259ca0d6 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/ExtWhere2Str.java @@ -9,6 +9,7 @@ import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.datasource.model.SQLMeta; import io.dataease.extensions.datasource.model.SQLObj; +import io.dataease.extensions.datasource.vo.DatasourceConfiguration; import io.dataease.extensions.view.dto.ChartExtFilterDTO; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; @@ -166,14 +167,16 @@ public class ExtWhere2Str { break; } } - if (hasN && !isCross) { + if (hasN && !isCross && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = "(" + value.stream().map(str -> "'" + SQLConstants.MSSQL_N_PREFIX + str + "'").collect(Collectors.joining(",")) + ")"; } else { whereValue = "('" + StringUtils.join(value, "','") + "')"; } } else { if ((StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = "(" + value.stream().map(str -> "'" + SQLConstants.MSSQL_N_PREFIX + str + "'").collect(Collectors.joining(",")) + ")"; } else { if (request.getDatasetTableField().getDeType() == 2 || request.getDatasetTableField().getDeType() == 3) { @@ -196,14 +199,16 @@ public class ExtWhere2Str { break; } } - if (hasN && !isCross) { + if (hasN && !isCross && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = "'" + SQLConstants.MSSQL_N_PREFIX + "%" + value.get(0) + "%'"; } else { whereValue = "'%" + value.get(0) + "%'"; } } else { if ((StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = "'" + SQLConstants.MSSQL_N_PREFIX + "%" + value.get(0) + "%'"; } else { whereValue = "'%" + value.get(0) + "%'"; @@ -248,8 +253,9 @@ public class ExtWhere2Str { List datasetTableFieldList = request.getDatasetTableFieldList(); boolean hasN = false; for (DatasetTableFieldDTO dto : datasetTableFieldList) { - if (StringUtils.containsIgnoreCase(dto.getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(dto.getType(), "NCHAR")) { + if ((StringUtils.containsIgnoreCase(dto.getType(), "NVARCHAR") + || StringUtils.containsIgnoreCase(dto.getType(), "NCHAR")) + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { hasN = true; break; } @@ -261,7 +267,9 @@ public class ExtWhere2Str { } } else { if ((StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(request.getDatasetTableField().getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE_CH, value.get(0)); } else { whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE, value.get(0)); diff --git a/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java b/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java index ff64acdb2f..451ada7d3e 100644 --- a/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java +++ b/core/core-backend/src/main/java/io/dataease/engine/trans/WhereTree2Str.java @@ -1,8 +1,8 @@ package io.dataease.engine.trans; import io.dataease.api.permissions.dataset.dto.DataSetRowPermissionsTreeDTO; -import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.constant.SQLConstants; +import io.dataease.engine.constant.ExtFieldConstant; import io.dataease.engine.utils.Utils; import io.dataease.extensions.datasource.api.PluginManageApi; import io.dataease.extensions.datasource.constant.SqlPlaceholderConstants; @@ -11,6 +11,7 @@ import io.dataease.extensions.datasource.dto.DatasetTableFieldDTO; import io.dataease.extensions.datasource.dto.DatasourceSchemaDTO; import io.dataease.extensions.datasource.model.SQLMeta; import io.dataease.extensions.datasource.model.SQLObj; +import io.dataease.extensions.datasource.vo.DatasourceConfiguration; import io.dataease.extensions.view.dto.DatasetRowPermissionsTreeItem; import io.dataease.extensions.view.dto.DatasetRowPermissionsTreeObj; import org.apache.commons.collections4.CollectionUtils; @@ -180,7 +181,9 @@ public class WhereTree2Str { if (StringUtils.equalsIgnoreCase(item.getFilterType(), "enum")) { if (CollectionUtils.isNotEmpty(item.getEnumValue())) { if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { res = "(" + whereName + " IN (" + item.getEnumValue().stream().map(str -> "'" + SQLConstants.MSSQL_N_PREFIX + str + "'").collect(Collectors.joining(",")) + "))"; } else { res = "(" + whereName + " IN ('" + String.join("','", item.getEnumValue()) + "'))"; @@ -205,14 +208,18 @@ public class WhereTree2Str { whereValue = "''"; } else if (StringUtils.containsIgnoreCase(item.getTerm(), "in") || StringUtils.containsIgnoreCase(item.getTerm(), "not in")) { if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = "(" + Arrays.stream(value.split(",")).map(str -> "'" + SQLConstants.MSSQL_N_PREFIX + str + "'").collect(Collectors.joining(",")) + ")"; } else { whereValue = "('" + String.join("','", value.split(",")) + "')"; } } else if (StringUtils.containsIgnoreCase(item.getTerm(), "like")) { if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = "'" + SQLConstants.MSSQL_N_PREFIX + "%" + value + "%'"; } else { whereValue = "'%" + value + "%'"; @@ -256,7 +263,9 @@ public class WhereTree2Str { } } else { if ((StringUtils.containsIgnoreCase(field.getType(), "NVARCHAR") - || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) && !isCross) { + || StringUtils.containsIgnoreCase(field.getType(), "NCHAR")) + && !isCross + && StringUtils.equalsIgnoreCase(dsType, DatasourceConfiguration.DatasourceType.sqlServer.getType())) { whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE_CH, value); } else { whereValue = String.format(SQLConstants.WHERE_VALUE_VALUE, value);