Как сохранить последовательность цифр (или последовательность символов из некоторого другого набора)?
Я хочу сохранить некоторую последовательность цифр, которая может быть числом (например, 12345, 1230) или нет (например, 00123, 0120). Какой тип столбца является наиболее эффективным (по памяти, по скорости индексации) для этой цели?
Кроме того, мне нужно хранить строки символов из специально определенного алфавита (например, "цифры и запятые" или "цифры и английские буквы, точки и запятые"). Как эффективно это сделать?
Могу ли я установить ограничения на CHAR
/VARCHAR
тип столбца для уменьшения объема памяти он занимает?
2 ответа
Для sql вы можете пойти с
varchar() и если вы используете POSTgreSQL, вы можете использовать что-то, известное как citext
Это ничем не отличается от любого строкового столбца, который подразумевает тип varchar/text.
VARCHAR(n)
динамически заботится о хранении.
Для ограничения разрешенных символов вы можете использовать ограничения CHECK, но они не работают в MySQL, поэтому обходной путь должен использовать триггер и определять принятые символы там. Смотрите этот вопрос. Вы могли бы использовать REGEXP
функция для определения вашего допустимого алфавита.