#sql-server
#sql-сервер
Вопрос:
Как мне написать контрольное ограничение для SQL Server, которое применяет foramt «99999-9999»? То есть все 9 цифр и тире являются обязательными.
Комментарии:
1. Вы пытались написать код, чтобы проверить это? Вы должны отредактировать, чтобы включить вашу попытку.
2. Вы можете сделать это с помощью простого
LIKE
сопоставления, напримерCHECK (id LIKE '[0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]')
. Однако это не совсем полезно, поскольку люди все равно могут вводить фиктивные почтовые индексы, которые не могут существовать в реальности.3. Не отвечая на ваш вопрос, я, как правило, добивался большего успеха, сохраняя почтовый индекс отдельно от zip 4. Я ставлю тире на место только при извлечении данных. В моих системах было приемлемо иметь только почтовый индекс. Кроме того, маршруты доставки перевозчика меняются гораздо чаще, чем базовые цифры
4. @AaronBertrand Цель состоит в том, чтобы предотвратить попадание совершенно абсурдных данных в мою таблицу. Теоретически службы проверки адресов уже запущены, но я не верю, что это так.
5. Итак, вы все еще подозреваете, что у вас могут быть неверные данные в правильном формате. Для меня это все еще оставляет вас на шаг позади. 🙂