@@ -89,6 +89,56 @@ func TestExpr_Build(t *testing.T) {
8989 Expr : field .NewField ("" , "id" ).GroupConcat (),
9090 Result : "GROUP_CONCAT(`id`)" ,
9191 },
92+ {
93+ Expr : field .NewUnsafeFieldRaw ("if(column1=?,column2,column3)" , "1" ),
94+ Result : "if(column1=?,column2,column3)" ,
95+ ExpectedVars : []interface {}{"1" },
96+ },
97+ {
98+ Expr : field .NewUnsafeFieldRaw ("if(column1=?,column2,column3)" , "1" ).Eq (p ),
99+ Result : "if(column1=?,column2,column3) = ?" ,
100+ ExpectedVars : []interface {}{"1" , p },
101+ },
102+ {
103+ Expr : field .NewUnsafeFieldRaw ("if(column1=?,column2,column3)" , field .NewField ("" , "new_id" )).Eq (p ),
104+ Result : "if(column1=`new_id`,column2,column3) = ?" ,
105+ ExpectedVars : []interface {}{p },
106+ },
107+ {
108+ Expr : field .NewUnsafeFieldRaw ("if(column1=?,column2,column3)" , "1" ).EqCol (field .NewField ("" , "new_id" )),
109+ Result : "if(column1=?,column2,column3) = `new_id`" ,
110+ ExpectedVars : []interface {}{"1" },
111+ },
112+ {
113+ Expr : field .NewUnsafeFieldRaw ("if(column1=?,column2,column3)" , "1" ).EqCol (field .NewField ("" , "new_id" ).WithTable ("tableB" )),
114+ Result : "if(column1=?,column2,column3) = `tableB`.`new_id`" ,
115+ ExpectedVars : []interface {}{"1" },
116+ },
117+ {
118+ Expr : field .NewUnsafeFieldRaw ("if(column1=?,column2,column3)" , "1" ).IsNull (),
119+ Result : "if(column1=?,column2,column3) IS NULL" ,
120+ ExpectedVars : []interface {}{"1" },
121+ },
122+ {
123+ Expr : field .NewUnsafeFieldRaw ("if(column1=?,column2,column3)" , "1" ).GroupConcat (),
124+ Result : "GROUP_CONCAT(if(column1=?,column2,column3))" ,
125+ ExpectedVars : []interface {}{"1" },
126+ },
127+ {
128+ Expr : field .NewUnsafeFieldRaw ("if(column1=?,column2,column3)" , "1" ).Desc (),
129+ Result : "if(column1=?,column2,column3) DESC" ,
130+ ExpectedVars : []interface {}{"1" },
131+ },
132+ {
133+ Expr : field .NewUnsafeFieldRaw ("if(column1=?,column2,column3)" , "1" ).IfNull (p ),
134+ Result : "IFNULL(if(column1=?,column2,column3),?)" ,
135+ ExpectedVars : []interface {}{"1" , p },
136+ },
137+ {
138+ Expr : field .NewUnsafeFieldRaw ("if(column1=?,column2,column3)" , "1" ).As ("column4" ),
139+ Result : "if(column1=?,column2,column3) AS `column4`" ,
140+ ExpectedVars : []interface {}{"1" },
141+ },
92142 {
93143 Expr : field .Func .UnixTimestamp (),
94144 Result : "UNIX_TIMESTAMP()" ,
0 commit comments