# `Ash.Type.CiString`
[🔗](https://github.com/ash-project/ash/blob/v3.17.0/lib/ash/type/ci_string.ex#L5)

Stores a case insensitive string in the database

See `Ash.CiString` for more information.

A builtin type that can be referenced via `:ci_string`

### Constraints

* `:max_length` (`t:non_neg_integer/0`) - Enforces a maximum length on the value

* `:min_length` (`t:non_neg_integer/0`) - Enforces a minimum length on the value

* `:match` (`t:Regex.t/0`) - Enforces that the string matches a passed in regex

* `:trim?` (`t:boolean/0`) - Trims the value. The default value is `true`.

* `:allow_empty?` (`t:boolean/0`) - Sets the value to `nil` if it's empty. The default value is `false`.

* `:casing` - Lowercases or uppercases the value, fully discarding case information.  
  For example, if you don't set this, a value of `FrEd` could be saved to the data layer.
  `FrEd` and `fReD` would still compare as equal, but the original casing information  is retained.
  In many cases, this is what you want. In some cases, however, you want to remove all case information.
  For example, in an email, you may want to support a user inputting an upper case letter, but discard it
  when saved.
   Valid values are :upper, :lower, nil The default value is `nil`.

# `handle_change?`

# `prepare_change?`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
