Предложение:
• Сделайте ваш столбец текста фиксированной ширины (т.е. CHAR
вместо VARCHAR
).
• Дополните существующие значения достаточным количеством начальных нулей, чтобы заполнить каждый столбец, и конечным пробелом, в котором значения не заканчиваются на «а» (или что-либо еще).
• Добавьте ограничение CHECK
(или его эквивалент), чтобы новые значения соответствовали шаблону, например, что-то вроде
CHECK (process_number LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][ab ]')
• В хранимых процедурах вставки / обновления (или аналогичных) добавьте все входящие значения, чтобы они соответствовали шаблону.
• Удалите начальные / конечные нули / пробелы соответствующим образом при отображении значений для людей.
Другое преимущество этого подхода состоит в том, что входящие значения «1», «01», «001» и т. Д. Будут рассматриваться как одно и то же значение и могут охватываться простым уникальным ограничением в СУБД. *
Кстати, мне нравится идея разделения конечного «а» (или чего-либо еще) на отдельный столбец, однако у меня сложилось впечатление, что рассматриваемый элемент данных является идентификатором, и, следовательно, нецелесообразно его разделять.