Documentation ¶
Overview ¶
Package wherein expands SQL statements that have placeholders that can accept slices of arguments. This is most commonly useful for SQL statements that might look something like
SELECT * FROM table_name WHERE column_name IN (?)
If the argument associated with the placeholder is a slice containing (say) three values, then the SQL would be expanded to
SELECT * FROM table_name where column_name in (?,?,?)
See the example for more details.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Expand ¶
Expand takes an SQL query and associated arguments and expands out any arguments that are a slice of values. Returns the new, expanded SQL query with arguments that have been flattened into a slice of scalar argument values.
If args contains only scalar values, then query and args are returned unchanged.
Example ¶
// Using MySQL/SQLite style positional placeholders { sql := "SELECT * FROM table_name WHERE column1 IN (?) and column2 = ?" args := []interface{}{ []int{101, 102, 103}, "abc", } newSQL, newArgs, err := Expand(sql, args) if err != nil { fmt.Print(err) return } fmt.Printf("sql = %s\nargs = %v\n\n", newSQL, newArgs) } // Using PostgreSQL style numbered placeholders { sql := "SELECT * FROM table_name WHERE column1 IN ($1) and column2 = $2" args := []interface{}{ []int{101, 102, 103}, "abc", } newSQL, newArgs, err := Expand(sql, args) if err != nil { fmt.Print(err) return } fmt.Printf("sql = %s\nargs = %v\n\n", newSQL, newArgs) } // Using MySQL/SQLite style numbered placeholders { sql := "SELECT * FROM table_name WHERE column1 IN (?2) and column2 IN (?1)" args := []interface{}{ []int{101, 102, 103}, []string{"abc", "def", "ghi"}, } newSQL, newArgs, err := Expand(sql, args) if err != nil { fmt.Print(err) return } fmt.Printf("sql = %s\nargs = %v\n\n", newSQL, newArgs) }
Output: sql = SELECT * FROM table_name WHERE column1 IN (?,?,?) and column2 = ? args = [101 102 103 abc] sql = SELECT * FROM table_name WHERE column1 IN ($1,$2,$3) and column2 = $4 args = [101 102 103 abc] sql = SELECT * FROM table_name WHERE column1 IN (?4,?5,?6) and column2 IN (?1,?2,?3) args = [101 102 103 abc def ghi]
Types ¶
This section is empty.