mirror of
				https://github.com/nsnail/FreeSql.git
				synced 2025-11-04 09:15:27 +08:00 
			
		
		
		
	- 修复 Pgsql string[] 属性表达式 Contains 缺少类型转换的 SQL 语法错误;
This commit is contained in:
		@@ -67,6 +67,7 @@ namespace FreeSql.Tests.PostgreSQLExpression
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            var sql1 = select.Where(a => a.testFieldIntArray.Contains(1)).ToList();
 | 
					            var sql1 = select.Where(a => a.testFieldIntArray.Contains(1)).ToList();
 | 
				
			||||||
            var sql2 = select.Where(a => a.testFieldIntArray.Contains(1) == false).ToList();
 | 
					            var sql2 = select.Where(a => a.testFieldIntArray.Contains(1) == false).ToList();
 | 
				
			||||||
 | 
					            var sql121 = select.Where(a => a.testFieldStringArray.Contains("aaa") == false).ToList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            //in not in
 | 
					            //in not in
 | 
				
			||||||
            var sql111 = select.Where(a => new[] { 1, 2, 3 }.Contains(a.testFieldInt)).ToList();
 | 
					            var sql111 = select.Where(a => new[] { 1, 2, 3 }.Contains(a.testFieldInt)).ToList();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -135,7 +135,13 @@ namespace FreeSql.Odbc.PostgreSQL
 | 
				
			|||||||
                                if (left.StartsWith("(") || left.EndsWith(")"))
 | 
					                                if (left.StartsWith("(") || left.EndsWith(")"))
 | 
				
			||||||
                                    return $"{right1} in {left}";
 | 
					                                    return $"{right1} in {left}";
 | 
				
			||||||
                                if (right1.StartsWith("(") || right1.EndsWith(")")) right1 = $"array[{right1.TrimStart('(').TrimEnd(')')}]";
 | 
					                                if (right1.StartsWith("(") || right1.EndsWith(")")) right1 = $"array[{right1.TrimStart('(').TrimEnd(')')}]";
 | 
				
			||||||
                                return $"({left} @> array[{right1}])";
 | 
					                                right1 = $"array[{right1}]";
 | 
				
			||||||
 | 
					                                if (objExp != null)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    var dbinfo = _common._orm.CodeFirst.GetDbInfo(objExp.Type);
 | 
				
			||||||
 | 
					                                    if (dbinfo.HasValue) right1 = $"{right1}::{dbinfo.Value.dbtype}";
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                return $"({left} @> {right1})";
 | 
				
			||||||
                            case "Concat":
 | 
					                            case "Concat":
 | 
				
			||||||
                                if (left.StartsWith("(") || left.EndsWith(")")) left = $"array[{left.TrimStart('(').TrimEnd(')')}]";
 | 
					                                if (left.StartsWith("(") || left.EndsWith(")")) left = $"array[{left.TrimStart('(').TrimEnd(')')}]";
 | 
				
			||||||
                                var right2 = getExp(callExp.Arguments[argIndex]);
 | 
					                                var right2 = getExp(callExp.Arguments[argIndex]);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -164,7 +164,13 @@ namespace FreeSql.PostgreSQL
 | 
				
			|||||||
                                if (left.StartsWith("(") || left.EndsWith(")"))
 | 
					                                if (left.StartsWith("(") || left.EndsWith(")"))
 | 
				
			||||||
                                    return $"{right1} in {left}";
 | 
					                                    return $"{right1} in {left}";
 | 
				
			||||||
                                if (right1.StartsWith("(") || right1.EndsWith(")")) right1 = $"array[{right1.TrimStart('(').TrimEnd(')')}]";
 | 
					                                if (right1.StartsWith("(") || right1.EndsWith(")")) right1 = $"array[{right1.TrimStart('(').TrimEnd(')')}]";
 | 
				
			||||||
                                return $"({left} @> array[{right1}])";
 | 
					                                right1 = $"array[{right1}]";
 | 
				
			||||||
 | 
					                                if (objExp != null)
 | 
				
			||||||
 | 
					                                {
 | 
				
			||||||
 | 
					                                    var dbinfo = _common._orm.CodeFirst.GetDbInfo(objExp.Type);
 | 
				
			||||||
 | 
					                                    if (dbinfo.HasValue) right1 = $"{right1}::{dbinfo.Value.dbtype}";
 | 
				
			||||||
 | 
					                                }
 | 
				
			||||||
 | 
					                                return $"({left} @> {right1})";
 | 
				
			||||||
                            case "Concat":
 | 
					                            case "Concat":
 | 
				
			||||||
                                if (left.StartsWith("(") || left.EndsWith(")")) left = $"array[{left.TrimStart('(').TrimEnd(')')}]";
 | 
					                                if (left.StartsWith("(") || left.EndsWith(")")) left = $"array[{left.TrimStart('(').TrimEnd(')')}]";
 | 
				
			||||||
                                var right2 = getExp(callExp.Arguments[argIndex]);
 | 
					                                var right2 = getExp(callExp.Arguments[argIndex]);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user