From 2435f46bf84d73587acb9f41ec3bbf5401d178b1 Mon Sep 17 00:00:00 2001 From: Daniel Hammerschmid Date: Thu, 25 Feb 2021 12:39:11 +0100 Subject: [PATCH] Added function gorm.Concat --- expression_ext.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/expression_ext.go b/expression_ext.go index fed1221b..060e5555 100644 --- a/expression_ext.go +++ b/expression_ext.go @@ -192,6 +192,28 @@ func Not(stmt interface{}) *expr { return e } +// Concat will create an expression which concats all given statements together. +func Concat(stmts ...interface{}) *expr { + e := &expr{expr: "CONCAT("} + + for i, stmt := range stmts { + if i != 0 { + e.expr += ", " + } + + if exp, ok := stmt.(*expr); ok { + e.expr += exp.expr + e.args = append(e.args, exp.args...) + } else { + e.expr += "?" + e.args = append(e.args, stmt) + } + } + + e.expr += ")" + return e +} + func (e *expr) Gt(value interface{}) *expr { return e.operator(">", value) }