Documentation
¶
Index ¶
- Variables
- func ASCII(v string) (value.Value, error)
- func BYTE_LENGTH(v []byte) (value.Value, error)
- func BindCollate(args ...value.Value) (value.Value, error)
- func BindEditDistance(args ...value.Value) (value.Value, error)
- func BindSplit(args ...value.Value) (value.Value, error)
- func BindToCodePoints(args ...value.Value) (value.Value, error)
- func CHAR_LENGTH(v []byte) (value.Value, error)
- func CHR(v int64) (value.Value, error)
- func CODE_POINTS_TO_BYTES(v *value.ArrayValue) (value.Value, error)
- func CODE_POINTS_TO_STRING(v *value.ArrayValue) (value.Value, error)
- func COLLATE(v, spec string) (value.Value, error)
- func CONCAT(args ...value.Value) (value.Value, error)
- func CONTAINS_SUBSTR(haystack, needle string) (value.Value, error)
- func EDIT_DISTANCE(a, b string) (value.Value, error)
- func ENDS_WITH(val, ends value.Value) (value.Value, error)
- func FORMAT(format string, args ...value.Value) (value.Value, error)
- func FROM_BASE32(v string) (value.Value, error)
- func FROM_BASE64(v string) (value.Value, error)
- func FROM_HEX(v string) (value.Value, error)
- func INITCAP(val string, delimiters []rune) (value.Value, error)
- func INSTR(source, search value.Value, position, occurrence int64) (value.Value, error)
- func LEFT(v value.Value, length int64) (value.Value, error)
- func LENGTH(v value.Value) (value.Value, error)
- func LIKE(a, b value.Value) (value.Value, error)
- func LOWER(v value.Value) (value.Value, error)
- func LPAD(originalValue value.Value, returnLength int64, pattern value.Value) (value.Value, error)
- func LTRIM(v value.Value, cutset string) (value.Value, error)
- func NORMALIZE(v, mode string) (value.Value, error)
- func NORMALIZE_AND_CASEFOLD(v, mode string) (value.Value, error)
- func REGEXP_CONTAINS(val, expr string) (value.Value, error)
- func REGEXP_EXTRACT(val value.Value, expr string, position, occurrence int64) (value.Value, error)
- func REGEXP_EXTRACT_ALL(val value.Value, expr string) (value.Value, error)
- func REGEXP_INSTR(sourceValue, exprValue value.Value, position, occurrence, occurrencePos int64) (value.Value, error)
- func REGEXP_REPLACE(val, exprValue, replacementValue value.Value) (value.Value, error)
- func REPEAT(originalValue value.Value, repetitions int64) (value.Value, error)
- func REPLACE(originalValue, fromValue, toValue value.Value) (value.Value, error)
- func REVERSE(val value.Value) (value.Value, error)
- func RIGHT(val value.Value, length int64) (value.Value, error)
- func RPAD(originalValue value.Value, returnLength int64, pattern value.Value) (value.Value, error)
- func RTRIM(val value.Value, cutset string) (value.Value, error)
- func SAFE_CONVERT_BYTES_TO_STRING(val []byte) (value.Value, error)
- func SOUNDEX(val string) (value.Value, error)
- func SPLIT(val, delimValue value.Value) (value.Value, error)
- func STARTS_WITH(val, starts value.Value) (value.Value, error)
- func STRPOS(val, search value.Value) (value.Value, error)
- func SUBSTR(val value.Value, pos int64, length *int64) (value.Value, error)
- func TO_BASE32(v []byte) (value.Value, error)
- func TO_BASE64(v []byte) (value.Value, error)
- func TO_CODE_POINTS(v value.Value) (value.Value, error)
- func TO_HEX(v []byte) (value.Value, error)
- func TRANSLATE(expr, source, target value.Value) (value.Value, error)
- func TRIM(v, cutsetV value.Value) (value.Value, error)
- func UNICODE(v string) (value.Value, error)
- func UPPER(v value.Value) (value.Value, error)
- type FormatContext
- type FormatFlag
- type FormatInfo
- type FormatParam
- type FormatPrecision
- type FormatWidth
Constants ¶
This section is empty.
Variables ¶
var BindAscii = helper.Scalar1(func(a value.Value) (value.Value, error) { ascii, err := a.ToString() if err != nil { return nil, err } if ascii == "" { return value.IntValue(0), nil } return ASCII(ascii) })
var BindByteLength = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToBytes() if err != nil { return nil, err } return BYTE_LENGTH(v) })
var BindCharLength = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToBytes() if err != nil { return nil, err } return CHAR_LENGTH(v) })
var BindChr = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToInt64() if err != nil { return nil, err } return CHR(v) })
var BindCodePointsToBytes = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToArray() if err != nil { return nil, err } return CODE_POINTS_TO_BYTES(v) })
var BindCodePointsToString = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToArray() if err != nil { return nil, err } return CODE_POINTS_TO_STRING(v) })
var BindConcat = helper.ScalarN(func(args ...value.Value) (value.Value, error) { if len(args) < 1 { return nil, fmt.Errorf("CONCAT: invalid number of arguments: got %d, want at least 1", len(args)) } return CONCAT(args...) })
var BindContainsSubstr = helper.Scalar2(func(a, b value.Value) (value.Value, error) { hay, err := a.ToString() if err != nil { return nil, err } needle, err := b.ToString() if err != nil { return nil, err } return CONTAINS_SUBSTR(hay, needle) })
var BindEndsWith = helper.Scalar2(ENDS_WITH)
var BindFormat = helper.ScalarN(func(args ...value.Value) (value.Value, error) { if len(args) == 0 { return nil, fmt.Errorf("FORMAT: invalid number of arguments: got %d, want at least 1", len(args)) } format, err := args[0].ToString() if err != nil { return nil, err } if len(args) > 1 { return FORMAT(format, args[1:]...) } return FORMAT(format) })
var BindFromBase32 = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToString() if err != nil { return nil, err } return FROM_BASE32(v) })
var BindFromBase64 = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToString() if err != nil { return nil, err } return FROM_BASE64(v) })
var BindFromHex = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToString() if err != nil { return nil, err } return FROM_HEX(v) })
var BindInitcap = helper.ScalarN(func(args ...value.Value) (value.Value, error) { if len(args) != 1 && len(args) != 2 { return nil, fmt.Errorf("INITCAP: invalid number of arguments: got %d, want 1 or 2", len(args)) } var delimiters []rune if len(args) == 2 { v, err := args[1].ToString() if err != nil { return nil, err } delimiters = []rune{} for _, vv := range v { delimiters = append(delimiters, vv) } } value, err := args[0].ToString() if err != nil { return nil, err } return INITCAP(value, delimiters) })
var BindInstr = helper.ScalarN(func(args ...value.Value) (value.Value, error) { if len(args) != 2 && len(args) != 3 && len(args) != 4 { return nil, fmt.Errorf("INSTR: invalid number of arguments: got %d, want one of 2, 3, 4", len(args)) } var ( // Per BigQuery docs, position defaults to 1 (start from the // first character). The previous default of 0 tripped the // `position > 0` guard in INSTR for 2-arg calls. position int64 = 1 occurrence int64 = 1 ) if len(args) >= 3 { pos, err := args[2].ToInt64() if err != nil { return nil, err } position = pos } if len(args) == 4 { occur, err := args[3].ToInt64() if err != nil { return nil, err } occurrence = occur } return INSTR(args[0], args[1], position, occurrence) })
var BindLeft = helper.Scalar2(func(a, b value.Value) (value.Value, error) { length, err := b.ToInt64() if err != nil { return nil, err } return LEFT(a, length) })
var BindLength = helper.Scalar1(LENGTH)
var BindLike = helper.Scalar2(LIKE)
BindLike: per GoogleSQL three-valued logic, LIKE with a NULL operand returns NULL, not FALSE — Scalar2 propagates that.
var BindLower = helper.Scalar1(LOWER)
var BindLpad = helper.ScalarN(func(args ...value.Value) (value.Value, error) { if len(args) != 2 && len(args) != 3 { return nil, fmt.Errorf("LPAD: invalid number of arguments: got %d, want 2 or 3", len(args)) } var pattern value.Value if len(args) == 3 { pattern = args[2] } length, err := args[1].ToInt64() if err != nil { return nil, err } return LPAD(args[0], length, pattern) })
var BindLtrim = helper.ScalarN(func(args ...value.Value) (value.Value, error) { if len(args) != 1 && len(args) != 2 { return nil, fmt.Errorf("LTRIM: invalid number of arguments: got %d, want 1 or 2", len(args)) } cutset := "" if len(args) == 2 { v, err := args[1].ToString() if err != nil { return nil, err } cutset = v } return LTRIM(args[0], cutset) })
var BindNormalize = helper.ScalarN(func(args ...value.Value) (value.Value, error) { if len(args) != 1 && len(args) != 2 { return nil, fmt.Errorf("NORMALIZE: invalid number of arguments: got %d, want 1 or 2", len(args)) } mode := "NFC" if len(args) == 2 { v, err := args[1].ToString() if err != nil { return nil, err } mode = v } v, err := args[0].ToString() if err != nil { return nil, err } return NORMALIZE(v, mode) })
var BindNormalizeAndCasefold = helper.ScalarN(func(args ...value.Value) (value.Value, error) { if len(args) != 1 && len(args) != 2 { return nil, fmt.Errorf("NORMALIZE_AND_CASEFOLD: invalid number of arguments: got %d, want 1 or 2", len(args)) } mode := "NFC" if len(args) == 2 { v, err := args[1].ToString() if err != nil { return nil, err } mode = v } v, err := args[0].ToString() if err != nil { return nil, err } return NORMALIZE_AND_CASEFOLD(v, mode) })
var BindRegexpContains = helper.Scalar2(func(a, b value.Value) (value.Value, error) { v, err := a.ToString() if err != nil { return nil, err } expr, err := b.ToString() if err != nil { return nil, err } return REGEXP_CONTAINS(v, expr) })
var BindRegexpExtract = helper.ScalarN(func(args ...value.Value) (value.Value, error) { regexp, err := args[1].ToString() if err != nil { return nil, err } var pos int64 = 1 if len(args) > 2 { p, err := args[2].ToInt64() if err != nil { return nil, err } pos = p } var occurrence int64 = 1 if len(args) > 3 { o, err := args[3].ToInt64() if err != nil { return nil, err } occurrence = o } return REGEXP_EXTRACT(args[0], regexp, pos, occurrence) })
var BindRegexpExtractAll = helper.Scalar2(func(a, b value.Value) (value.Value, error) { expr, err := b.ToString() if err != nil { return nil, err } return REGEXP_EXTRACT_ALL(a, expr) })
var BindRegexpInstr = helper.ScalarN(func(args ...value.Value) (value.Value, error) { var ( pos int64 = 1 occurrence int64 = 1 occurrencePos int64 = 0 ) if len(args) > 2 { p, err := args[2].ToInt64() if err != nil { return nil, err } pos = p } if len(args) > 3 { o, err := args[3].ToInt64() if err != nil { return nil, err } occurrence = o } if len(args) > 4 { p, err := args[4].ToInt64() if err != nil { return nil, err } occurrencePos = p } return REGEXP_INSTR(args[0], args[1], pos, occurrence, occurrencePos) })
var BindRepeat = helper.Scalar2(func(a, b value.Value) (value.Value, error) { repetitions, err := b.ToInt64() if err != nil { return nil, err } return REPEAT(a, repetitions) })
var BindRight = helper.Scalar2(func(a, b value.Value) (value.Value, error) { length, err := b.ToInt64() if err != nil { return nil, err } return RIGHT(a, length) })
var BindRpad = helper.ScalarN(func(args ...value.Value) (value.Value, error) { length, err := args[1].ToInt64() if err != nil { return nil, err } var pat value.Value if len(args) > 2 { pat = args[2] } return RPAD(args[0], length, pat) })
var BindRtrim = helper.ScalarN(func(args ...value.Value) (value.Value, error) { var cutset = "" if len(args) > 1 { v, err := args[1].ToString() if err != nil { return nil, err } cutset = v } return RTRIM(args[0], cutset) })
var BindSafeConvertBytesToString = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToBytes() if err != nil { return nil, err } return SAFE_CONVERT_BYTES_TO_STRING(v) })
var BindSoundex = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToString() if err != nil { return nil, err } return SOUNDEX(v) })
var BindStartsWith = helper.Scalar2(STARTS_WITH)
var BindStrpos = helper.Scalar2(STRPOS)
var BindSubstr = helper.ScalarN(func(args ...value.Value) (value.Value, error) { if len(args) != 2 && len(args) != 3 { return nil, fmt.Errorf("SUBSTR: invalid number of arguments: got %d, want 2 or 3", len(args)) } pos, err := args[1].ToInt64() if err != nil { return nil, err } var length *int64 if len(args) == 3 { v, err := args[2].ToInt64() if err != nil { return nil, err } length = &v } return SUBSTR(args[0], pos, length) })
var BindToBase32 = helper.Scalar1(func(a value.Value) (value.Value, error) { b, err := a.ToBytes() if err != nil { return nil, err } return TO_BASE32(b) })
var BindToBase64 = helper.Scalar1(func(a value.Value) (value.Value, error) { b, err := a.ToBytes() if err != nil { return nil, err } return TO_BASE64(b) })
var BindToHex = helper.Scalar1(func(a value.Value) (value.Value, error) { b, err := a.ToBytes() if err != nil { return nil, err } return TO_HEX(b) })
var BindTranslate = helper.Scalar3(TRANSLATE)
var BindTrim = helper.ScalarN(func(args ...value.Value) (value.Value, error) { if len(args) != 1 && len(args) != 2 { return nil, fmt.Errorf("TRIM: invalid number of arguments: got %d, want 1 or 2", len(args)) } if len(args) == 2 { return TRIM(args[0], args[1]) } return TRIM(args[0], nil) })
var BindUnicode = helper.Scalar1(func(a value.Value) (value.Value, error) { v, err := a.ToString() if err != nil { return nil, err } return UNICODE(v) })
var BindUpper = helper.Scalar1(UPPER)
Functions ¶
func CODE_POINTS_TO_BYTES ¶
func CODE_POINTS_TO_BYTES(v *value.ArrayValue) (value.Value, error)
func CODE_POINTS_TO_STRING ¶
func CODE_POINTS_TO_STRING(v *value.ArrayValue) (value.Value, error)
func CONTAINS_SUBSTR ¶
CONTAINS_SUBSTR is the BigQuery substring search. Per BQ docs the match is case-insensitive, NFKC-normalised. We approximate via strings.EqualFold-style ASCII case folding, which covers the overwhelming majority of real call sites; full NFKC normalisation is a follow-up.
Returns NULL if either operand is NULL. Returns BOOL otherwise.
func EDIT_DISTANCE ¶
EDIT_DISTANCE computes the Levenshtein distance between two strings. Counted in Unicode code points, matching BigQuery's default (byte_semantics => FALSE). The optional max_distance / byte_semantics named arguments are not yet wired through the analyzer; they are follow-ups.
func LTRIM ¶
LTRIM trims characters from the left. cutset == "" means: strip the full Unicode whitespace class for STRING (ASCII whitespace for BYTES).
func REGEXP_EXTRACT ¶
func REGEXP_EXTRACT_ALL ¶
func REGEXP_INSTR ¶
func REGEXP_REPLACE ¶
func RTRIM ¶
RTRIM trims characters from the right. cutset == "" means: strip the full Unicode whitespace class for STRING (ASCII whitespace for BYTES).
Types ¶
type FormatContext ¶
type FormatContext struct {
// contains filtered or unexported fields
}
type FormatFlag ¶
type FormatFlag int
const ( FormatFlagNone FormatFlag = 0 FormatFlagMinus FormatFlag = 1 FormatFlagPlus FormatFlag = 2 FormatFlagSpace FormatFlag = 3 FormatFlagSharp FormatFlag = 4 FormatFlagZero FormatFlag = 5 FormatFlagQuote FormatFlag = 6 )
type FormatInfo ¶
type FormatInfo struct {
// contains filtered or unexported fields
}
type FormatParam ¶
type FormatParam struct {
// contains filtered or unexported fields
}
type FormatPrecision ¶
type FormatPrecision struct {
// contains filtered or unexported fields
}
type FormatWidth ¶
type FormatWidth struct {
// contains filtered or unexported fields
}
Source Files
¶
- ascii.go
- byte_length.go
- char_length.go
- chr.go
- code_points_to_bytes.go
- code_points_to_string.go
- collate.go
- concat.go
- contains_substr.go
- edit_distance.go
- ends_with.go
- format.go
- from_base32.go
- from_base64.go
- from_hex.go
- function_format.go
- initcap.go
- initcap_helpers.go
- instr.go
- left.go
- length.go
- like.go
- lower.go
- lpad.go
- ltrim.go
- normalize.go
- normalize_and_casefold.go
- regexp_contains.go
- regexp_extract.go
- regexp_extract_all.go
- regexp_instr.go
- regexp_replace.go
- repeat.go
- replace.go
- reverse.go
- right.go
- rpad.go
- rtrim.go
- safe_convert_bytes_to_string.go
- soundex.go
- split.go
- starts_with.go
- string_helpers.go
- strpos.go
- substr.go
- to_base32.go
- to_base64.go
- to_code_points.go
- to_hex.go
- translate.go
- trim.go
- unicode.go
- upper.go