Entity
    Preparing search index...
    SQLExpression: {
        anyArray: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                values: FragmentValueArray<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                values: readonly TFields[N][],
            ): SQLFragment<TFields>;
        };
        between: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                min: FragmentValue<TFragment>,
                max: FragmentValue<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                min: TFields[N],
                max: TFields[N],
            ): SQLFragment<TFields>;
        };
        cast: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                typeName:
                    | "bigint"
                    | "boolean"
                    | "int"
                    | "integer"
                    | "int2"
                    | "int4"
                    | "int8"
                    | "smallint"
                    | "numeric"
                    | "decimal"
                    | "real"
                    | "double precision"
                    | "float"
                    | "float4"
                    | "float8"
                    | "text"
                    | "varchar"
                    | "char"
                    | "character varying"
                    | "bool"
                    | "date"
                    | "time"
                    | "timestamp"
                    | "timestamptz"
                    | "interval"
                    | "json"
                    | "jsonb"
                    | "uuid"
                    | "bytea",
            ): SQLChainableFragment<
                ExtractFragmentFields<TFragment>,
                SupportedSQLValue,
            >;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                typeName:
                    | "bigint"
                    | "boolean"
                    | "int"
                    | "integer"
                    | "int2"
                    | "int4"
                    | "int8"
                    | "smallint"
                    | "numeric"
                    | "decimal"
                    | "real"
                    | "double precision"
                    | "float"
                    | "float4"
                    | "float8"
                    | "text"
                    | "varchar"
                    | "char"
                    | "character varying"
                    | "bool"
                    | "date"
                    | "time"
                    | "timestamp"
                    | "timestamptz"
                    | "interval"
                    | "json"
                    | "jsonb"
                    | "uuid"
                    | "bytea",
            ): SQLChainableFragment<TFields, SupportedSQLValue>;
        };
        eq: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                value: FragmentValueNullable<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                value: TFields[N],
            ): SQLFragment<TFields>;
        };
        gt: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                value: FragmentValue<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                value: TFields[N],
            ): SQLFragment<TFields>;
        };
        gte: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                value: FragmentValue<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                value: TFields[N],
            ): SQLFragment<TFields>;
        };
        ilike: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                pattern: string,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                pattern: string,
            ): SQLFragment<TFields>;
        };
        inArray: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                values: FragmentValueArray<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                values: readonly TFields[N][],
            ): SQLFragment<TFields>;
        };
        isNotNull: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
            ): SQLFragment<TFields>;
        };
        isNull: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
            ): SQLFragment<TFields>;
        };
        jsonContainedBy: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                value: JsonSerializable,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                value: JsonSerializable,
            ): SQLFragment<TFields>;
        };
        jsonContains: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                value: JsonSerializable,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                value: JsonSerializable,
            ): SQLFragment<TFields>;
        };
        jsonDeepPath: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                path: readonly string[],
            ): SQLChainableFragment<
                ExtractFragmentFields<TFragment>,
                SupportedSQLValue,
            >;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                path: readonly string[],
            ): SQLChainableFragment<TFields, SupportedSQLValue>;
        };
        jsonDeepPathText: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                path: readonly string[],
            ): SQLChainableFragment<
                ExtractFragmentFields<TFragment>,
                SupportedSQLValue,
            >;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                path: readonly string[],
            ): SQLChainableFragment<TFields, SupportedSQLValue>;
        };
        jsonPath: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                path: string,
            ): SQLChainableFragment<
                ExtractFragmentFields<TFragment>,
                SupportedSQLValue,
            >;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                path: string,
            ): SQLChainableFragment<TFields, SupportedSQLValue>;
        };
        jsonPathText: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                path: string,
            ): SQLChainableFragment<
                ExtractFragmentFields<TFragment>,
                SupportedSQLValue,
            >;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                path: string,
            ): SQLChainableFragment<TFields, SupportedSQLValue>;
        };
        like: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                pattern: string,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                pattern: string,
            ): SQLFragment<TFields>;
        };
        lower: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
            ): SQLChainableFragment<
                ExtractFragmentFields<TFragment>,
                SupportedSQLValue,
            >;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
            ): SQLChainableFragment<TFields, TFields[N]>;
        };
        lt: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                value: FragmentValue<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                value: TFields[N],
            ): SQLFragment<TFields>;
        };
        lte: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                value: FragmentValue<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                value: TFields[N],
            ): SQLFragment<TFields>;
        };
        neq: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                value: FragmentValueNullable<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                value: TFields[N],
            ): SQLFragment<TFields>;
        };
        notBetween: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                min: FragmentValue<TFragment>,
                max: FragmentValue<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                min: TFields[N],
                max: TFields[N],
            ): SQLFragment<TFields>;
        };
        notIlike: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                pattern: string,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                pattern: string,
            ): SQLFragment<TFields>;
        };
        notInArray: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                values: FragmentValueArray<TFragment>,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                values: readonly TFields[N][],
            ): SQLFragment<TFields>;
        };
        notLike: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
                pattern: string,
            ): SQLFragment<ExtractFragmentFields<TFragment>>;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
                pattern: string,
            ): SQLFragment<TFields>;
        };
        trim: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
            ): SQLChainableFragment<
                ExtractFragmentFields<TFragment>,
                SupportedSQLValue,
            >;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
            ): SQLChainableFragment<TFields, TFields[N]>;
        };
        upper: {
            <TFragment extends SQLFragment<any>>(
                fragment: TFragment,
            ): SQLChainableFragment<
                ExtractFragmentFields<TFragment>,
                SupportedSQLValue,
            >;
            <TFields extends Record<string, any>, N extends string | number | symbol>(
                fieldName: N,
            ): SQLChainableFragment<TFields, TFields[N]>;
        };
        and<TFields extends Record<string, any>>(
            ...conditions: readonly SQLFragment<TFields>[],
        ): SQLFragment<TFields>;
        coalesce<TFields extends Record<string, any>>(
            ...args: readonly (SupportedSQLValue | SQLFragment<TFields>)[],
        ): SQLChainableFragment<TFields, SupportedSQLValue>;
        group<TFields extends Record<string, any>>(
            condition: SQLFragment<TFields>,
        ): SQLFragment<TFields>;
        not<TFields extends Record<string, any>>(
            condition: SQLFragment<TFields>,
        ): SQLFragment<TFields>;
        or<TFields extends Record<string, any>>(
            ...conditions: readonly SQLFragment<TFields>[],
        ): SQLFragment<TFields>;
    } = ...

    Common SQL helper functions for building queries.

    All methods accept either a field name (string) or a SQLFragment/SQLChainableFragment as the first argument. When a SQLChainableFragment with a known TValue is passed (e.g. from trim, lower), value parameters are type-checked against that TValue.

    Type Declaration

    • anyArray: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              values: FragmentValueArray<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              values: readonly TFields[N][],
          ): SQLFragment<TFields>;
      }

      = ANY() clause helper. Binds the array as a single parameter instead of expanding it. Semantically equivalent to IN for most cases, but retains a consistent query shape for query metrics.

      SQLExpression.anyArray('status', ['active', 'pending'])
      
    • between: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              min: FragmentValue<TFragment>,
              max: FragmentValue<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              min: TFields[N],
              max: TFields[N],
          ): SQLFragment<TFields>;
      }

      BETWEEN helper.

      SQLExpression.between('age', 18, 65)
      SQLExpression.between(SQLExpression.cast('age', 'int'), 18, 65)
    • cast: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              typeName:
                  | "bigint"
                  | "boolean"
                  | "int"
                  | "integer"
                  | "int2"
                  | "int4"
                  | "int8"
                  | "smallint"
                  | "numeric"
                  | "decimal"
                  | "real"
                  | "double precision"
                  | "float"
                  | "float4"
                  | "float8"
                  | "text"
                  | "varchar"
                  | "char"
                  | "character varying"
                  | "bool"
                  | "date"
                  | "time"
                  | "timestamp"
                  | "timestamptz"
                  | "interval"
                  | "json"
                  | "jsonb"
                  | "uuid"
                  | "bytea",
          ): SQLChainableFragment<
              ExtractFragmentFields<TFragment>,
              SupportedSQLValue,
          >;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              typeName:
                  | "bigint"
                  | "boolean"
                  | "int"
                  | "integer"
                  | "int2"
                  | "int4"
                  | "int8"
                  | "smallint"
                  | "numeric"
                  | "decimal"
                  | "real"
                  | "double precision"
                  | "float"
                  | "float4"
                  | "float8"
                  | "text"
                  | "varchar"
                  | "char"
                  | "character varying"
                  | "bool"
                  | "date"
                  | "time"
                  | "timestamp"
                  | "timestamptz"
                  | "interval"
                  | "json"
                  | "jsonb"
                  | "uuid"
                  | "bytea",
          ): SQLChainableFragment<TFields, SupportedSQLValue>;
      }

      SQL type cast helper (::type). Casts an expression or field to a PostgreSQL type. Returns an SQLChainableFragment so that fluent comparison methods can be chained.

      A SQLFragment/SQLChainableFragment or entity field name to cast

      The PostgreSQL type name (e.g., 'int', 'text', 'timestamptz')

    • eq: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              value: FragmentValueNullable<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              value: TFields[N],
          ): SQLFragment<TFields>;
      }

      Equality operator. Automatically converts null/undefined to IS NULL.

    • gt: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              value: FragmentValue<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              value: TFields[N],
          ): SQLFragment<TFields>;
      }

      Greater-than comparison operator.

    • gte: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              value: FragmentValue<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              value: TFields[N],
          ): SQLFragment<TFields>;
      }

      Greater-than-or-equal-to comparison operator.

    • ilike: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              pattern: string,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              pattern: string,
          ): SQLFragment<TFields>;
      }

      ILIKE helper for case-insensitive matching (PostgreSQL-specific).

    • inArray: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              values: FragmentValueArray<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              values: readonly TFields[N][],
          ): SQLFragment<TFields>;
      }

      IN clause helper.

      SQLExpression.inArray('status', ['active', 'pending'])
      SQLExpression.inArray(SQLExpression.lower('status'), ['active', 'pending'])
    • isNotNull: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
          ): SQLFragment<TFields>;
      }

      IS NOT NULL check helper.

    • isNull: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
          ): SQLFragment<TFields>;
      }

      IS NULL check helper.

    • jsonContainedBy: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              value: JsonSerializable,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              value: JsonSerializable,
          ): SQLFragment<TFields>;
      }

      JSON contained by operator (<@).

    • jsonContains: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              value: JsonSerializable,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              value: JsonSerializable,
          ): SQLFragment<TFields>;
      }

      JSON contains operator (@>).

    • jsonDeepPath: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              path: readonly string[],
          ): SQLChainableFragment<
              ExtractFragmentFields<TFragment>,
              SupportedSQLValue,
          >;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              path: readonly string[],
          ): SQLChainableFragment<TFields, SupportedSQLValue>;
      }

      JSON deep path extraction helper (#>). Extracts a JSON sub-object at the specified key path, returning jsonb. Returns an SQLChainableFragment so that fluent comparison methods can be chained.

      A SQLFragment/SQLChainableFragment or entity field name

      Array of keys forming the path (e.g., ['user', 'address', 'city'])

    • jsonDeepPathText: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              path: readonly string[],
          ): SQLChainableFragment<
              ExtractFragmentFields<TFragment>,
              SupportedSQLValue,
          >;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              path: readonly string[],
          ): SQLChainableFragment<TFields, SupportedSQLValue>;
      }

      JSON deep path text extraction helper (#>>). Extracts a JSON sub-object at the specified key path as text. Returns an SQLChainableFragment so that fluent comparison methods can be chained.

      A SQLFragment/SQLChainableFragment or entity field name

      Array of keys forming the path (e.g., ['user', 'address', 'city'])

    • jsonPath: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              path: string,
          ): SQLChainableFragment<
              ExtractFragmentFields<TFragment>,
              SupportedSQLValue,
          >;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              path: string,
          ): SQLChainableFragment<TFields, SupportedSQLValue>;
      }

      JSON path extraction helper (->). Returns an SQLChainableFragment so that fluent comparison methods can be chained.

    • jsonPathText: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              path: string,
          ): SQLChainableFragment<
              ExtractFragmentFields<TFragment>,
              SupportedSQLValue,
          >;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              path: string,
          ): SQLChainableFragment<TFields, SupportedSQLValue>;
      }

      JSON path text extraction helper (->>). Returns an SQLChainableFragment so that fluent comparison methods can be chained.

    • like: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              pattern: string,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              pattern: string,
          ): SQLFragment<TFields>;
      }

      LIKE helper for case-sensitive pattern matching.

      SQLExpression.like('name', '%John%')
      
    • lower: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
          ): SQLChainableFragment<
              ExtractFragmentFields<TFragment>,
              SupportedSQLValue,
          >;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
          ): SQLChainableFragment<TFields, TFields[N]>;
      }

      LOWER helper Converts a string expression to lowercase. Returns an SQLChainableFragment so that fluent comparison methods can be chained.

    • lt: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              value: FragmentValue<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              value: TFields[N],
          ): SQLFragment<TFields>;
      }

      Less-than comparison operator.

    • lte: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              value: FragmentValue<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              value: TFields[N],
          ): SQLFragment<TFields>;
      }

      Less-than-or-equal-to comparison operator.

    • neq: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              value: FragmentValueNullable<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              value: TFields[N],
          ): SQLFragment<TFields>;
      }

      Inequality operator. Automatically converts null/undefined to IS NOT NULL.

    • notBetween: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              min: FragmentValue<TFragment>,
              max: FragmentValue<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              min: TFields[N],
              max: TFields[N],
          ): SQLFragment<TFields>;
      }

      NOT BETWEEN helper.

    • notIlike: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              pattern: string,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              pattern: string,
          ): SQLFragment<TFields>;
      }

      NOT ILIKE helper for case-insensitive non-matching (PostgreSQL-specific).

    • notInArray: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              values: FragmentValueArray<TFragment>,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              values: readonly TFields[N][],
          ): SQLFragment<TFields>;
      }

      NOT IN clause helper.

    • notLike: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
              pattern: string,
          ): SQLFragment<ExtractFragmentFields<TFragment>>;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
              pattern: string,
          ): SQLFragment<TFields>;
      }

      NOT LIKE helper.

    • trim: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
          ): SQLChainableFragment<
              ExtractFragmentFields<TFragment>,
              SupportedSQLValue,
          >;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
          ): SQLChainableFragment<TFields, TFields[N]>;
      }

      TRIM helper Removes leading and trailing whitespace from a string expression. Returns an SQLChainableFragment so that fluent comparison methods can be chained.

    • upper: {
          <TFragment extends SQLFragment<any>>(
              fragment: TFragment,
          ): SQLChainableFragment<
              ExtractFragmentFields<TFragment>,
              SupportedSQLValue,
          >;
          <TFields extends Record<string, any>, N extends string | number | symbol>(
              fieldName: N,
          ): SQLChainableFragment<TFields, TFields[N]>;
      }

      UPPER helper Converts a string expression to uppercase. Returns an SQLChainableFragment so that fluent comparison methods can be chained.

    • and: function
    • coalesce: function
    • group: function
    • not: function
    • or: function
    // Field name usage
    SQLExpression.eq('status', 'active')

    // SQLFragment/SQLChainableFragment usage
    SQLExpression.eq(sql`${entityField('status')}`, 'active')
    SQLExpression.eq(SQLExpression.trim('name'), 'hello') // value constrained to string