Documentation
¶
Index ¶
- Variables
- func DebugSqlizer(s Sqlizer) string
- func Placeholders(count int) string
- type And
- type CaseBuilder
- type DeleteBuilder
- func (b *DeleteBuilder) Clear() *DeleteBuilder
- func (b *DeleteBuilder) Clone() *DeleteBuilder
- func (b *DeleteBuilder) From(from string) *DeleteBuilder
- func (b *DeleteBuilder) Limit(limit uint64) *DeleteBuilder
- func (b *DeleteBuilder) Offset(offset uint64) *DeleteBuilder
- func (b *DeleteBuilder) OrderBy(orderBys ...string) *DeleteBuilder
- func (b *DeleteBuilder) Prefix(sql string, args ...any) *DeleteBuilder
- func (b *DeleteBuilder) PrefixExpr(expr Sqlizer) *DeleteBuilder
- func (b *DeleteBuilder) Returning(columns ...string) *DeleteBuilder
- func (b *DeleteBuilder) Suffix(sql string, args ...any) *DeleteBuilder
- func (b *DeleteBuilder) SuffixExpr(expr Sqlizer) *DeleteBuilder
- func (b *DeleteBuilder) ToSql() (sqlStr string, args []any, err error)
- func (b *DeleteBuilder) Where(pred any, args ...any) *DeleteBuilder
- type Eq
- type InsertBuilder
- func (b *InsertBuilder) Clear() *InsertBuilder
- func (b *InsertBuilder) Clone() *InsertBuilder
- func (b *InsertBuilder) Columns(columns ...string) *InsertBuilder
- func (b *InsertBuilder) Into(from string) *InsertBuilder
- func (b *InsertBuilder) Options(options ...string) *InsertBuilder
- func (b *InsertBuilder) Prefix(sql string, args ...any) *InsertBuilder
- func (b *InsertBuilder) PrefixExpr(expr Sqlizer) *InsertBuilder
- func (b *InsertBuilder) Returning(columns ...string) *InsertBuilder
- func (b *InsertBuilder) Select(sb *SelectBuilder) *InsertBuilder
- func (b *InsertBuilder) SetMap(clauses map[string]any) *InsertBuilder
- func (b *InsertBuilder) StatementKeyword(keyword string) *InsertBuilder
- func (b *InsertBuilder) Suffix(sql string, args ...any) *InsertBuilder
- func (b *InsertBuilder) SuffixExpr(expr Sqlizer) *InsertBuilder
- func (b *InsertBuilder) ToSql() (sqlStr string, args []any, err error)
- func (b *InsertBuilder) Values(values ...any) *InsertBuilder
- type NotEq
- type Or
- type PlaceholderFormat
- type SelectBuilder
- func (b *SelectBuilder) AddColumn(column any, args ...any) *SelectBuilder
- func (b *SelectBuilder) Clear() *SelectBuilder
- func (b *SelectBuilder) Clone() *SelectBuilder
- func (b *SelectBuilder) CrossJoin(join string, rest ...any) *SelectBuilder
- func (b *SelectBuilder) Distinct() *SelectBuilder
- func (b *SelectBuilder) From(from string) *SelectBuilder
- func (b *SelectBuilder) FromSelect(from *SelectBuilder, alias string) *SelectBuilder
- func (b *SelectBuilder) GroupBy(groupBys ...string) *SelectBuilder
- func (b *SelectBuilder) Having(pred any, rest ...any) *SelectBuilder
- func (b *SelectBuilder) InnerJoin(join string, rest ...any) *SelectBuilder
- func (b *SelectBuilder) Join(join string, rest ...any) *SelectBuilder
- func (b *SelectBuilder) JoinClause(pred any, args ...any) *SelectBuilder
- func (b *SelectBuilder) LeftJoin(join string, rest ...any) *SelectBuilder
- func (b *SelectBuilder) Limit(limit uint64) *SelectBuilder
- func (b *SelectBuilder) Lock(sql string, args ...any) *SelectBuilder
- func (b *SelectBuilder) LockExpr(expr Sqlizer) *SelectBuilder
- func (b *SelectBuilder) Offset(offset uint64) *SelectBuilder
- func (b *SelectBuilder) Options(options ...string) *SelectBuilder
- func (b *SelectBuilder) OrderBy(orderBys ...string) *SelectBuilder
- func (b *SelectBuilder) OrderByClause(pred any, args ...any) *SelectBuilder
- func (b *SelectBuilder) Prefix(sql string, args ...any) *SelectBuilder
- func (b *SelectBuilder) PrefixExpr(expr Sqlizer) *SelectBuilder
- func (b *SelectBuilder) RemoveColumns() *SelectBuilder
- func (b *SelectBuilder) RemoveLimit() *SelectBuilder
- func (b *SelectBuilder) RemoveOffset() *SelectBuilder
- func (b *SelectBuilder) RightJoin(join string, rest ...any) *SelectBuilder
- func (b *SelectBuilder) Select(columns ...string) *SelectBuilder
- func (b *SelectBuilder) Suffix(sql string, args ...any) *SelectBuilder
- func (b *SelectBuilder) SuffixExpr(expr Sqlizer) *SelectBuilder
- func (b *SelectBuilder) ToCountBuilder() *SelectBuilder
- func (b *SelectBuilder) ToSql() (sqlStr string, args []any, err error)
- func (b *SelectBuilder) Where(pred any, args ...any) *SelectBuilder
- func (b *SelectBuilder) With(sql string, args ...any) *SelectBuilder
- func (b *SelectBuilder) WithExpr(expr Sqlizer) *SelectBuilder
- type Sqlizer
- func Alias(expr Sqlizer, alias string) Sqlizer
- func Between[T cmp.Ordered](field string, start, end T) Sqlizer
- func ConcatExpr(parts ...any) Sqlizer
- func Expr(sql string, args ...any) Sqlizer
- func Gt[T cmp.Ordered](field string, value T) Sqlizer
- func Gte[T cmp.Ordered](field string, value T) Sqlizer
- func ILike(field, value string) Sqlizer
- func In[T any](field string, val []T) Sqlizer
- func IsNotNull(field string) Sqlizer
- func IsNull(field string) Sqlizer
- func Like(field, value string) Sqlizer
- func Lt[T cmp.Ordered](field string, value T) Sqlizer
- func Lte[T cmp.Ordered](field string, value T) Sqlizer
- func NotILike(field, value string) Sqlizer
- func NotIn[T any](field string, val []T) Sqlizer
- func NotLike(field, value string) Sqlizer
- type UpdateBuilder
- func (b *UpdateBuilder) Clear() *UpdateBuilder
- func (b *UpdateBuilder) Clone() *UpdateBuilder
- func (b *UpdateBuilder) From(from string) *UpdateBuilder
- func (b *UpdateBuilder) FromSelect(from *SelectBuilder, alias string) *UpdateBuilder
- func (b *UpdateBuilder) Limit(limit uint64) *UpdateBuilder
- func (b *UpdateBuilder) Offset(offset uint64) *UpdateBuilder
- func (b *UpdateBuilder) OrderBy(orderBys ...string) *UpdateBuilder
- func (b *UpdateBuilder) Prefix(sql string, args ...any) *UpdateBuilder
- func (b *UpdateBuilder) PrefixExpr(expr Sqlizer) *UpdateBuilder
- func (b *UpdateBuilder) Returning(columns ...string) *UpdateBuilder
- func (b *UpdateBuilder) Set(column string, value any) *UpdateBuilder
- func (b *UpdateBuilder) SetMap(clauses map[string]any) *UpdateBuilder
- func (b *UpdateBuilder) Suffix(sql string, args ...any) *UpdateBuilder
- func (b *UpdateBuilder) SuffixExpr(expr Sqlizer) *UpdateBuilder
- func (b *UpdateBuilder) Table(table string) *UpdateBuilder
- func (b *UpdateBuilder) ToSql() (sqlStr string, args []any, err error)
- func (b *UpdateBuilder) Where(pred any, args ...any) *UpdateBuilder
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ( // Question is a PlaceholderFormat instance that leaves placeholders as // question marks. Question = questionFormat{} // Dollar is a PlaceholderFormat instance that replaces placeholders with // dollar-prefixed positional placeholders (e.g. $1, $2, $3). Dollar = dollarFormat{} // Colon is a PlaceholderFormat instance that replaces placeholders with // colon-prefixed positional placeholders (e.g. :1, :2, :3). Colon = colonFormat{} // AtP is a PlaceholderFormat instance that replaces placeholders with // "@p"-prefixed positional placeholders (e.g. @p1, @p2, @p3). AtP = atpFormat{} )
Functions ¶
func DebugSqlizer ¶
DebugSqlizer calls ToSql on s and shows the approximate SQL to be executed
If ToSql returns an error, the result of this method will look like: "[ToSql error: %s]" or "[DebugSqlizer error: %s]"
IMPORTANT: As its name suggests, this function should only be used for debugging. While the string result *might* be valid SQL, this function does not try very hard to ensure it. Additionally, executing the output of this function with any untrusted user input is certainly insecure.
func Placeholders ¶
Placeholders returns a string with count ? placeholders joined with commas.
Types ¶
type CaseBuilder ¶
type CaseBuilder struct {
// contains filtered or unexported fields
}
CaseBuilder holds all the data required to build a CASE SQL construct
func Case ¶
func Case(what ...any) *CaseBuilder
Case returns a new CASE expression builder. Pass one argument for a simple CASE value, or no arguments for a searched CASE.
func (*CaseBuilder) Else ¶
func (b *CaseBuilder) Else(expr any) *CaseBuilder
Else sets optional "ELSE ..." part for CASE construct
func (*CaseBuilder) ToSql ¶
func (b *CaseBuilder) ToSql() (sqlStr string, args []any, err error)
ToSql implements Sqlizer
func (*CaseBuilder) What ¶
func (b *CaseBuilder) What(expr any) *CaseBuilder
What sets optional value for CASE construct "CASE [value] ..."
func (*CaseBuilder) When ¶
func (b *CaseBuilder) When(when any, then any) *CaseBuilder
When adds "WHEN ... THEN ..." part to CASE construct
type DeleteBuilder ¶
type DeleteBuilder struct {
// contains filtered or unexported fields
}
DeleteBuilder builds DELETE statements clause by clause.
func Delete ¶
func Delete(from string) *DeleteBuilder
Delete returns a new DeleteBuilder with the given table name.
See DeleteBuilder.From.
func (*DeleteBuilder) Clear ¶
func (b *DeleteBuilder) Clear() *DeleteBuilder
Clear resets all fields while preserving slice capacity for reuse.
func (*DeleteBuilder) Clone ¶ added in v1.0.0
func (b *DeleteBuilder) Clone() *DeleteBuilder
Clone returns a shallow copy of the builder and its clause slices.
func (*DeleteBuilder) From ¶
func (b *DeleteBuilder) From(from string) *DeleteBuilder
From sets the table to be deleted from.
func (*DeleteBuilder) Limit ¶
func (b *DeleteBuilder) Limit(limit uint64) *DeleteBuilder
Limit sets a LIMIT clause on the query.
func (*DeleteBuilder) Offset ¶
func (b *DeleteBuilder) Offset(offset uint64) *DeleteBuilder
Offset sets a OFFSET clause on the query.
func (*DeleteBuilder) OrderBy ¶
func (b *DeleteBuilder) OrderBy(orderBys ...string) *DeleteBuilder
OrderBy adds ORDER BY expressions to the query.
func (*DeleteBuilder) Prefix ¶
func (b *DeleteBuilder) Prefix(sql string, args ...any) *DeleteBuilder
Prefix adds an expression to the beginning of the query
func (*DeleteBuilder) PrefixExpr ¶
func (b *DeleteBuilder) PrefixExpr(expr Sqlizer) *DeleteBuilder
PrefixExpr adds an expression to the very beginning of the query
func (*DeleteBuilder) Returning ¶
func (b *DeleteBuilder) Returning(columns ...string) *DeleteBuilder
Returning adds a RETURNING clause to the query.
func (*DeleteBuilder) Suffix ¶
func (b *DeleteBuilder) Suffix(sql string, args ...any) *DeleteBuilder
Suffix adds an expression to the end of the query
func (*DeleteBuilder) SuffixExpr ¶
func (b *DeleteBuilder) SuffixExpr(expr Sqlizer) *DeleteBuilder
SuffixExpr adds an expression to the end of the query
func (*DeleteBuilder) ToSql ¶
func (b *DeleteBuilder) ToSql() (sqlStr string, args []any, err error)
ToSql renders the DELETE statement and its bound arguments.
func (*DeleteBuilder) Where ¶
func (b *DeleteBuilder) Where(pred any, args ...any) *DeleteBuilder
Where adds WHERE expressions to the query.
See SelectBuilder.Where for more information.
type Eq ¶
Eq is syntactic sugar for use with Where/Having/Set methods.
Each entry renders as "<key> = ?" and the value is passed as one bound argument. Eq does not special-case nil into IS NULL, dereference pointers, call driver.Valuer, or expand slices/arrays into IN (...). Use IsNull, IsNotNull, In, or NotIn explicitly when you need those predicate forms.
Example ¶
Select("id", "created", "first_name").From("users").Where(Eq{
"company": 20,
})
type InsertBuilder ¶
type InsertBuilder struct {
// contains filtered or unexported fields
}
InsertBuilder builds INSERT-style statements clause by clause.
func Insert ¶
func Insert(into string) *InsertBuilder
Insert returns a new InsertBuilder with the given table name.
See InsertBuilder.Into.
func Replace ¶
func Replace(into string) *InsertBuilder
Replace returns a new InsertBuilder with the statement keyword set to "REPLACE" and with the given table name.
See InsertBuilder.Into.
func (*InsertBuilder) Clear ¶
func (b *InsertBuilder) Clear() *InsertBuilder
Clear resets all fields while preserving slice capacity for reuse.
func (*InsertBuilder) Clone ¶ added in v1.0.0
func (b *InsertBuilder) Clone() *InsertBuilder
Clone returns a shallow copy of the builder and its clause slices.
func (*InsertBuilder) Columns ¶
func (b *InsertBuilder) Columns(columns ...string) *InsertBuilder
Columns adds insert columns to the query.
func (*InsertBuilder) Into ¶
func (b *InsertBuilder) Into(from string) *InsertBuilder
Into sets the INTO clause of the query.
func (*InsertBuilder) Options ¶
func (b *InsertBuilder) Options(options ...string) *InsertBuilder
Options adds keyword options before the INTO clause of the query.
func (*InsertBuilder) Prefix ¶
func (b *InsertBuilder) Prefix(sql string, args ...any) *InsertBuilder
Prefix adds an expression to the beginning of the query
func (*InsertBuilder) PrefixExpr ¶
func (b *InsertBuilder) PrefixExpr(expr Sqlizer) *InsertBuilder
PrefixExpr adds an expression to the very beginning of the query
func (*InsertBuilder) Returning ¶
func (b *InsertBuilder) Returning(columns ...string) *InsertBuilder
Returning adds a RETURNING clause to the query.
func (*InsertBuilder) Select ¶
func (b *InsertBuilder) Select(sb *SelectBuilder) *InsertBuilder
Select uses a SELECT statement as the INSERT source. If both Values and Select are set, Select takes precedence.
func (*InsertBuilder) SetMap ¶
func (b *InsertBuilder) SetMap(clauses map[string]any) *InsertBuilder
SetMap replaces the current columns and values from a column-to-value map.
func (*InsertBuilder) StatementKeyword ¶
func (b *InsertBuilder) StatementKeyword(keyword string) *InsertBuilder
StatementKeyword overrides the leading statement keyword, for example "REPLACE".
func (*InsertBuilder) Suffix ¶
func (b *InsertBuilder) Suffix(sql string, args ...any) *InsertBuilder
Suffix adds an expression to the end of the query
func (*InsertBuilder) SuffixExpr ¶
func (b *InsertBuilder) SuffixExpr(expr Sqlizer) *InsertBuilder
SuffixExpr adds an expression to the end of the query
func (*InsertBuilder) ToSql ¶
func (b *InsertBuilder) ToSql() (sqlStr string, args []any, err error)
ToSql renders the INSERT statement and its bound arguments.
func (*InsertBuilder) Values ¶
func (b *InsertBuilder) Values(values ...any) *InsertBuilder
Values adds a single row's values to the query.
type NotEq ¶
type NotEq Eq
NotEq is syntactic sugar for use with Where/Having/Set methods.
Each entry renders as "<key> <> ?" and the value is passed as one bound argument. NotEq does not special-case nil into IS NOT NULL, dereference pointers, call driver.Valuer, or expand slices/arrays into NOT IN (...). Use IsNull, IsNotNull, In, or NotIn explicitly when you need those predicate forms. Ex:
.Where(NotEq{"id": 1}) == "id <> 1"
type PlaceholderFormat ¶
type PlaceholderFormat interface {
ReplacePlaceholders(sql string) (string, error)
PlaceholderString() string
}
PlaceholderFormat rewrites question-mark placeholders into a dialect-specific form.
type SelectBuilder ¶
type SelectBuilder struct {
// contains filtered or unexported fields
}
SelectBuilder builds SELECT statements clause by clause.
func Select ¶
func Select(columns ...string) *SelectBuilder
Select returns a new SelectBuilder, optionally setting some result columns.
See SelectBuilder.Select.
Example ¶
Select("id", "created", "first_name").From("users") // ... continue building up your query
// sql methods in select columns are ok
Select("first_name", "count(*)").From("users")
// column aliases are ok too
Select("first_name", "count(*) as n_users").From("users")
func (*SelectBuilder) AddColumn ¶
func (b *SelectBuilder) AddColumn(column any, args ...any) *SelectBuilder
AddColumn adds a result column to the query. Unlike Select, AddColumn accepts args which will be bound to placeholders in the columns string, for example:
AddColumn("IF(col IN ("+squirrel.Placeholders(3)+"), 1, 0) as col", 1, 2, 3)
func (*SelectBuilder) Clear ¶
func (b *SelectBuilder) Clear() *SelectBuilder
Clear resets all fields while preserving slice capacity for reuse.
func (*SelectBuilder) Clone ¶ added in v1.0.0
func (b *SelectBuilder) Clone() *SelectBuilder
Clone returns a shallow copy of the builder and its clause slices.
func (*SelectBuilder) CrossJoin ¶
func (b *SelectBuilder) CrossJoin(join string, rest ...any) *SelectBuilder
CrossJoin adds a CROSS JOIN clause to the query.
func (*SelectBuilder) Distinct ¶
func (b *SelectBuilder) Distinct() *SelectBuilder
Distinct adds a DISTINCT clause to the query.
func (*SelectBuilder) From ¶
func (b *SelectBuilder) From(from string) *SelectBuilder
From sets the FROM clause of the query.
Example ¶
Select("id", "created", "first_name").From("users") // ... continue building up your query
func (*SelectBuilder) FromSelect ¶
func (b *SelectBuilder) FromSelect(from *SelectBuilder, alias string) *SelectBuilder
FromSelect sets a subquery into the FROM clause of the query.
Example ¶
usersByCompany := Select("company", "count(*) as n_users").From("users").GroupBy("company")
query := Select("company.id", "company.name", "users_by_company.n_users").
FromSelect(usersByCompany, "users_by_company").
Join("company on company.id = users_by_company.company")
sql, _, _ := query.ToSql()
fmt.Println(sql)
Output: SELECT company.id, company.name, users_by_company.n_users FROM (SELECT company, count(*) as n_users FROM users GROUP BY company) AS users_by_company JOIN company on company.id = users_by_company.company
func (*SelectBuilder) GroupBy ¶
func (b *SelectBuilder) GroupBy(groupBys ...string) *SelectBuilder
GroupBy adds GROUP BY expressions to the query.
func (*SelectBuilder) Having ¶
func (b *SelectBuilder) Having(pred any, rest ...any) *SelectBuilder
Having adds an expression to the HAVING clause of the query.
See Where.
func (*SelectBuilder) InnerJoin ¶
func (b *SelectBuilder) InnerJoin(join string, rest ...any) *SelectBuilder
InnerJoin adds a INNER JOIN clause to the query.
func (*SelectBuilder) Join ¶
func (b *SelectBuilder) Join(join string, rest ...any) *SelectBuilder
Join adds a JOIN clause to the query.
func (*SelectBuilder) JoinClause ¶
func (b *SelectBuilder) JoinClause(pred any, args ...any) *SelectBuilder
JoinClause adds a join clause to the query.
func (*SelectBuilder) LeftJoin ¶
func (b *SelectBuilder) LeftJoin(join string, rest ...any) *SelectBuilder
LeftJoin adds a LEFT JOIN clause to the query.
func (*SelectBuilder) Limit ¶
func (b *SelectBuilder) Limit(limit uint64) *SelectBuilder
Limit sets a LIMIT clause on the query.
func (*SelectBuilder) Lock ¶ added in v1.0.0
func (b *SelectBuilder) Lock(sql string, args ...any) *SelectBuilder
Lock adds a row-locking clause such as FOR UPDATE to the end of the query.
func (*SelectBuilder) LockExpr ¶ added in v1.0.0
func (b *SelectBuilder) LockExpr(expr Sqlizer) *SelectBuilder
LockExpr adds a row-locking clause to the end of the query.
func (*SelectBuilder) Offset ¶
func (b *SelectBuilder) Offset(offset uint64) *SelectBuilder
Offset sets a OFFSET clause on the query.
func (*SelectBuilder) Options ¶
func (b *SelectBuilder) Options(options ...string) *SelectBuilder
Options adds select option to the query
func (*SelectBuilder) OrderBy ¶
func (b *SelectBuilder) OrderBy(orderBys ...string) *SelectBuilder
OrderBy adds ORDER BY expressions to the query.
func (*SelectBuilder) OrderByClause ¶
func (b *SelectBuilder) OrderByClause(pred any, args ...any) *SelectBuilder
OrderByClause adds ORDER BY clause to the query.
func (*SelectBuilder) Prefix ¶
func (b *SelectBuilder) Prefix(sql string, args ...any) *SelectBuilder
Prefix adds an expression to the beginning of the query
func (*SelectBuilder) PrefixExpr ¶
func (b *SelectBuilder) PrefixExpr(expr Sqlizer) *SelectBuilder
PrefixExpr adds an expression to the very beginning of the query
func (*SelectBuilder) RemoveColumns ¶
func (b *SelectBuilder) RemoveColumns() *SelectBuilder
RemoveColumns remove all columns from query. Must add a new column with AddColumn or Select methods, otherwise return a error.
func (*SelectBuilder) RemoveLimit ¶
func (b *SelectBuilder) RemoveLimit() *SelectBuilder
RemoveLimit remove LIMIT clause
func (*SelectBuilder) RemoveOffset ¶
func (b *SelectBuilder) RemoveOffset() *SelectBuilder
RemoveOffset removes OFFSET clause.
func (*SelectBuilder) RightJoin ¶
func (b *SelectBuilder) RightJoin(join string, rest ...any) *SelectBuilder
RightJoin adds a RIGHT JOIN clause to the query.
func (*SelectBuilder) Select ¶
func (b *SelectBuilder) Select(columns ...string) *SelectBuilder
Select adds result columns to the query.
func (*SelectBuilder) Suffix ¶
func (b *SelectBuilder) Suffix(sql string, args ...any) *SelectBuilder
Suffix adds an expression to the end of the query
func (*SelectBuilder) SuffixExpr ¶
func (b *SelectBuilder) SuffixExpr(expr Sqlizer) *SelectBuilder
SuffixExpr adds an expression to the end of the query
func (*SelectBuilder) ToCountBuilder ¶
func (b *SelectBuilder) ToCountBuilder() *SelectBuilder
ToCountBuilder rewrites the query into a COUNT query while preserving filters and joins.
func (*SelectBuilder) ToSql ¶
func (b *SelectBuilder) ToSql() (sqlStr string, args []any, err error)
ToSql renders the SELECT statement and its bound arguments.
Example ¶
var db *sql.DB
query := Select("id", "created", "first_name").From("users")
sql, args, err := query.ToSql()
if err != nil {
log.Println(err)
return
}
rows, err := db.Query(sql, args...)
if err != nil {
log.Println(err)
return
}
defer rows.Close()
for rows.Next() {
// scan...
}
func (*SelectBuilder) Where ¶
func (b *SelectBuilder) Where(pred any, args ...any) *SelectBuilder
Where adds an expression to the WHERE clause of the query.
Expressions are ANDed together in the generated SQL.
Where accepts several types for its pred argument:
nil OR "" - ignored.
string - SQL expression. If the expression has SQL placeholders then a set of arguments must be passed as well, one for each placeholderFormat.
map[string]any OR Eq - map of SQL expressions to values. Each key is transformed into an expression like "<key> = ?", with the corresponding value bound to the placeholderFormat. Nil, slices, arrays, pointers, and driver values are passed as one bound value; use IsNull, IsNotNull, In, or NotIn explicitly when you need those predicate forms.
Where will panic if pred isn't any of the above types.
Example ¶
companyId := 20
Select("id", "created", "first_name").From("users").Where("company = ?", companyId)
Example (Helpers) ¶
companyId := 20
Select("id", "created", "first_name").From("users").Where(Eq{
"company": companyId,
})
Select("id", "created", "first_name").From("users").Where(Expr("created >= ?", time.Now().AddDate(0, 0, -7)))
Select("id", "created", "first_name").From("users").Where(And{
Expr("created >= ?", time.Now().AddDate(0, 0, -7)),
Eq{
"company": companyId,
},
})
Example (Multiple) ¶
companyId := 20
// multiple where's are ok
Select("id", "created", "first_name").
From("users").
Where("company = ?", companyId).
Where(Expr("created >= ?", time.Now().AddDate(0, 0, -7)))
func (*SelectBuilder) With ¶ added in v1.0.0
func (b *SelectBuilder) With(sql string, args ...any) *SelectBuilder
With adds a WITH clause to the beginning of the query.
func (*SelectBuilder) WithExpr ¶ added in v1.0.0
func (b *SelectBuilder) WithExpr(expr Sqlizer) *SelectBuilder
WithExpr adds a WITH clause to the beginning of the query.
type Sqlizer ¶
Sqlizer is the interface that wraps the ToSql method.
ToSql returns a SQL representation of the Sqlizer, along with a slice of args as passed to e.g. database/sql.Exec. It can also return an error.
func Alias ¶
Alias allows to define alias for column in SelectBuilder. Useful when column is defined as complex expression like IF or CASE Ex:
.AddColumn(Alias(caseStmt, "case_column"))
func ConcatExpr ¶
ConcatExpr builds an expression by concatenating strings and other expressions.
Ex:
name_expr := Expr("CONCAT(?, ' ', ?)", firstName, lastName)
ConcatExpr("COALESCE(full_name,", name_expr, ")")
func Expr ¶
Expr builds an expression from a SQL fragment and arguments.
Ex:
Expr("FROM_UNIXTIME(?)", t)
func Gt ¶
Gt is syntactic sugar for use with Where/Having/Set methods. Ex:
.Where(Gt("id", 1)) == "id > 1"
func Gte ¶
Gte is syntactic sugar for use with Where/Having/Set methods. Ex:
.Where(Gte("id", 1)) == "id >= 1"
func ILike ¶
ILike is syntactic sugar for use with ILIKE conditions. Ex:
.Where(ILike("name", "sq%"))
func In ¶
In builds a field IN (...) predicate.
An empty slice becomes a portable false expression because SQL does not allow IN ().
func IsNotNull ¶ added in v1.0.0
IsNotNull builds a field IS NOT NULL predicate.
Use this instead of NotEq{field: nil} when you need SQL NULL semantics.
func IsNull ¶ added in v1.0.0
IsNull builds a field IS NULL predicate.
Use this instead of Eq{field: nil} when you need SQL NULL semantics.
func Like ¶
Like is syntactic sugar for use with LIKE conditions. Ex:
.Where(Like("name", "%irrel"))
func Lte ¶
Lte is syntactic sugar for use with Where/Having/Set methods. Ex:
.Where(Lte("id", 1)) == "id <= 1"
func NotILike ¶
NotILike is syntactic sugar for use with ILIKE conditions. Ex:
.Where(NotILike("name", "sq%"))
type UpdateBuilder ¶
type UpdateBuilder struct {
// contains filtered or unexported fields
}
UpdateBuilder builds UPDATE statements clause by clause.
func Update ¶
func Update(table string) *UpdateBuilder
Update returns a new UpdateBuilder with the given table name.
See UpdateBuilder.Table.
func (*UpdateBuilder) Clear ¶
func (b *UpdateBuilder) Clear() *UpdateBuilder
Clear resets all fields while preserving slice capacity for reuse.
func (*UpdateBuilder) Clone ¶ added in v1.0.0
func (b *UpdateBuilder) Clone() *UpdateBuilder
Clone returns a shallow copy of the builder and its clause slices.
func (*UpdateBuilder) From ¶
func (b *UpdateBuilder) From(from string) *UpdateBuilder
From adds a PostgreSQL-style FROM clause to the query.
func (*UpdateBuilder) FromSelect ¶
func (b *UpdateBuilder) FromSelect(from *SelectBuilder, alias string) *UpdateBuilder
FromSelect sets a subquery into the FROM clause of the query.
func (*UpdateBuilder) Limit ¶
func (b *UpdateBuilder) Limit(limit uint64) *UpdateBuilder
Limit sets a LIMIT clause on the query.
func (*UpdateBuilder) Offset ¶
func (b *UpdateBuilder) Offset(offset uint64) *UpdateBuilder
Offset sets a OFFSET clause on the query.
func (*UpdateBuilder) OrderBy ¶
func (b *UpdateBuilder) OrderBy(orderBys ...string) *UpdateBuilder
OrderBy adds ORDER BY expressions to the query.
func (*UpdateBuilder) Prefix ¶
func (b *UpdateBuilder) Prefix(sql string, args ...any) *UpdateBuilder
Prefix adds an expression to the beginning of the query
func (*UpdateBuilder) PrefixExpr ¶
func (b *UpdateBuilder) PrefixExpr(expr Sqlizer) *UpdateBuilder
PrefixExpr adds an expression to the very beginning of the query
func (*UpdateBuilder) Returning ¶
func (b *UpdateBuilder) Returning(columns ...string) *UpdateBuilder
Returning adds a RETURNING clause to the query.
func (*UpdateBuilder) Set ¶
func (b *UpdateBuilder) Set(column string, value any) *UpdateBuilder
Set adds SET clauses to the query.
func (*UpdateBuilder) SetMap ¶
func (b *UpdateBuilder) SetMap(clauses map[string]any) *UpdateBuilder
SetMap is a convenience method which calls .Set for each key/value pair in clauses.
func (*UpdateBuilder) Suffix ¶
func (b *UpdateBuilder) Suffix(sql string, args ...any) *UpdateBuilder
Suffix adds an expression to the end of the query
func (*UpdateBuilder) SuffixExpr ¶
func (b *UpdateBuilder) SuffixExpr(expr Sqlizer) *UpdateBuilder
SuffixExpr adds an expression to the end of the query
func (*UpdateBuilder) Table ¶
func (b *UpdateBuilder) Table(table string) *UpdateBuilder
Table sets the table to be updated.
func (*UpdateBuilder) ToSql ¶
func (b *UpdateBuilder) ToSql() (sqlStr string, args []any, err error)
ToSql renders the UPDATE statement and its bound arguments.
func (*UpdateBuilder) Where ¶
func (b *UpdateBuilder) Where(pred any, args ...any) *UpdateBuilder
Where adds WHERE expressions to the query.
See SelectBuilder.Where for more information.