mirror of
https://gitee.com/dotnetchina/SqlSugar.git
synced 2025-05-12 00:28:02 +08:00
修复构建多常量参数语法异常问题
This commit is contained in:
parent
686c3d249f
commit
501deb47cf
File diff suppressed because one or more lines are too long
@ -8,9 +8,9 @@ namespace SqlSugar.DB2
|
|||||||
public partial class DB2QueryBuilder : QueryBuilder
|
public partial class DB2QueryBuilder : QueryBuilder
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 静态常量标志
|
/// 静态常量正则表达式
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private string[] constanFlag = new string[] { "@const", "@constan" };
|
private const string constRegex = "@.*const.*";
|
||||||
|
|
||||||
#region Sql Template
|
#region Sql Template
|
||||||
public override string PageTempalte
|
public override string PageTempalte
|
||||||
@ -153,23 +153,28 @@ namespace SqlSugar.DB2
|
|||||||
{
|
{
|
||||||
var selectParams = selectSql.Split(",").Select(p =>
|
var selectParams = selectSql.Split(",").Select(p =>
|
||||||
{
|
{
|
||||||
if (!constanFlag.Any(t => p.ToLower().Contains(t))) return p;
|
if (!Regex.IsMatch(p, constRegex)) return p;
|
||||||
var parameter = this.Parameters.FirstOrDefault(t => p.Contains(t.ParameterName));
|
var parameterItems = this.Parameters.Where(t => p.Contains(t.ParameterName)).ToList();
|
||||||
if (parameter == null) return p;
|
if (!parameterItems.Any()) return p;
|
||||||
|
|
||||||
|
var paramSql = p;
|
||||||
|
parameterItems.ForEach(parameter =>
|
||||||
|
{
|
||||||
var dbType = DB2DbBind.MappingDbTypesConst.FirstOrDefault(t => parameter.DbType == t.Value);
|
var dbType = DB2DbBind.MappingDbTypesConst.FirstOrDefault(t => parameter.DbType == t.Value);
|
||||||
if (default(KeyValuePair<string, System.Data.DbType>).Equals(dbType)) return p;
|
if (default(KeyValuePair<string, System.Data.DbType>).Equals(dbType)) return;
|
||||||
var parameterized = string.Empty;
|
var parameterized = string.Empty;
|
||||||
if (dbType.Value == System.Data.DbType.String)
|
if (dbType.Value == System.Data.DbType.String)
|
||||||
{
|
{
|
||||||
var size = string.IsNullOrEmpty(parameter.Value?.ToString()) ? 1 : System.Text.Encoding.Default.GetBytes(parameter.Value?.ToString()).Length;;
|
var size = string.IsNullOrEmpty(parameter.Value?.ToString()) ? 1 : System.Text.Encoding.Default.GetBytes(parameter.Value?.ToString()).Length;
|
||||||
parameterized = $"{dbType.Key.ToUpper()}({size})";
|
parameterized = $"{dbType.Key.ToUpper()}({size})";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
parameterized = $"{dbType.Key.ToUpper()}";
|
parameterized = $"{dbType.Key.ToUpper()}";
|
||||||
}
|
}
|
||||||
return p.Replace(parameter.ParameterName, $" CAST({parameter.ParameterName} AS {parameterized}) ");
|
paramSql = paramSql.Replace(parameter.ParameterName, $" CAST({parameter.ParameterName} AS {parameterized}) ");
|
||||||
|
});
|
||||||
|
return paramSql;
|
||||||
});
|
});
|
||||||
return string.Join(",", selectParams);
|
return string.Join(",", selectParams);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user