@@ -74,11 +74,14 @@ func parseSQL(driver string, searchTag *resolveSearchTag, condition Condition, q
7474 if driver == Postgres {
7575 iStr = "i"
7676 }
77+ if searchTag .Table != "" {
78+ searchTag .Table = fmt .Sprintf ("`%s`." , searchTag .Table )
79+ }
7780 switch searchTag .Type {
7881 case "left" :
7982 //左关联
8083 join := condition .SetJoinOn (searchTag .Type , fmt .Sprintf (
81- "left join %s on %s.%s = %s.%s " ,
84+ "left join `%s` on `%s`.`%s` = %s.`%s` " ,
8285 searchTag .Join ,
8386 searchTag .Join ,
8487 searchTag .On [0 ],
@@ -87,37 +90,37 @@ func parseSQL(driver string, searchTag *resolveSearchTag, condition Condition, q
8790 ))
8891 ResolveSearchQuery (driver , qValue .Field (i ).Interface (), join )
8992 case "exact" , "iexact" :
90- condition .SetWhere (fmt .Sprintf ("%s.%s = ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
93+ condition .SetWhere (fmt .Sprintf ("%s`%s` = ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
9194 case "contains" :
92- condition .SetWhere (fmt .Sprintf ("%s.%s like ?" , searchTag .Table , searchTag .Column ), []interface {}{"%" + qValue .Field (i ).String () + "%" })
95+ condition .SetWhere (fmt .Sprintf ("%s`%s` like ?" , searchTag .Table , searchTag .Column ), []interface {}{"%" + qValue .Field (i ).String () + "%" })
9396 case "icontains" :
94- condition .SetWhere (fmt .Sprintf ("%s.%s %slike ?" , searchTag .Table , searchTag .Column , iStr ), []interface {}{"%" + qValue .Field (i ).String () + "%" })
97+ condition .SetWhere (fmt .Sprintf ("%s`%s` %slike ?" , searchTag .Table , searchTag .Column , iStr ), []interface {}{"%" + qValue .Field (i ).String () + "%" })
9598 case "gt" :
96- condition .SetWhere (fmt .Sprintf ("%s.%s > ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
99+ condition .SetWhere (fmt .Sprintf ("%s`%s` > ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
97100 case "gte" :
98- condition .SetWhere (fmt .Sprintf ("%s.%s >= ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
101+ condition .SetWhere (fmt .Sprintf ("%s`%s` >= ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
99102 case "lt" :
100- condition .SetWhere (fmt .Sprintf ("%s.%s < ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
103+ condition .SetWhere (fmt .Sprintf ("%s`%s` < ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
101104 case "lte" :
102- condition .SetWhere (fmt .Sprintf ("%s.%s <= ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
105+ condition .SetWhere (fmt .Sprintf ("%s`%s` <= ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
103106 case "startswith" :
104- condition .SetWhere (fmt .Sprintf ("%s.%s like ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).String () + "%" })
107+ condition .SetWhere (fmt .Sprintf ("%s`%s` like ?" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).String () + "%" })
105108 case "istartswith" :
106- condition .SetWhere (fmt .Sprintf ("%s.%s %slike ?" , searchTag .Table , searchTag .Column , iStr ), []interface {}{qValue .Field (i ).String () + "%" })
109+ condition .SetWhere (fmt .Sprintf ("%s`%s` %slike ?" , searchTag .Table , searchTag .Column , iStr ), []interface {}{qValue .Field (i ).String () + "%" })
107110 case "endswith" :
108- condition .SetWhere (fmt .Sprintf ("%s.%s like ?" , searchTag .Table , searchTag .Column ), []interface {}{"%" + qValue .Field (i ).String ()})
111+ condition .SetWhere (fmt .Sprintf ("%s`%s` like ?" , searchTag .Table , searchTag .Column ), []interface {}{"%" + qValue .Field (i ).String ()})
109112 case "iendswith" :
110- condition .SetWhere (fmt .Sprintf ("%s.%s %slike ?" , searchTag .Table , searchTag .Column , iStr ), []interface {}{"%" + qValue .Field (i ).String ()})
113+ condition .SetWhere (fmt .Sprintf ("%s`%s` %slike ?" , searchTag .Table , searchTag .Column , iStr ), []interface {}{"%" + qValue .Field (i ).String ()})
111114 case "in" :
112- condition .SetWhere (fmt .Sprintf ("`%s`. `%s` in (?)" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
115+ condition .SetWhere (fmt .Sprintf ("%s `%s` in (?)" , searchTag .Table , searchTag .Column ), []interface {}{qValue .Field (i ).Interface ()})
113116 case "isnull" :
114117 if ! (qValue .Field (i ).IsZero () && qValue .Field (i ).IsNil ()) {
115- condition .SetWhere (fmt .Sprintf ("%s. %s` isnull" , searchTag .Table , searchTag .Column ), make ([]interface {}, 0 ))
118+ condition .SetWhere (fmt .Sprintf ("%s` %s` isnull" , searchTag .Table , searchTag .Column ), make ([]interface {}, 0 ))
116119 }
117120 case "order" :
118121 switch strings .ToLower (qValue .Field (i ).String ()) {
119122 case "desc" , "asc" :
120- condition .SetOrder (fmt .Sprintf ("%s.%s %s" , searchTag .Table , searchTag .Column , qValue .Field (i ).String ()))
123+ condition .SetOrder (fmt .Sprintf ("%s`%s` %s" , searchTag .Table , searchTag .Column , qValue .Field (i ).String ()))
121124 }
122125 }
123126}
0 commit comments