Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 20.09.2011, 19:54   #1
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию MS SQL SERVER: ограничение CHECK и регулярные выражения

Добрый вечер!
У меня в таблице "Student" есть поле "st_code"(код студента), которое может содержать только 11 цифр.
Я создаю для этого поля ограничение с помощью CHECK - проверку, чтобы в это поле вводились только числа и ровно 11 символов. Пытаюсь для этого ограничения использовать регулярные выражения POSIX [0-9].
Я наверное что-то не так делаю, но сервер капризничает на оператор LIKE

Как написать запрос правильно? Мой нерабочий вариант:

Код:
ALTER TABLE dbo.Student
ADD CONSTRAINT ch_Personal_ID CHECK
(LEN(st_code)=11 AND st_code LIKE [0-9])
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума
Старый 20.09.2011, 20:57   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Никогда не использовал LIKE в CHECK, но у вас явная ошибка синтаксиса, попробуйте так
Код:
ALTER TABLE dbo.Student
  ADD CONSTRAINT ch_Personal_ID CHECK(LEN(st_code)=11 AND st_code LIKE '[0-9]')
Как вариант - сделать st_code NUMERIC(11) и контроль только на st_code>0 или st_code>9999999999. Вообще не люблю работать с символьными ключами
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 20.09.2011 в 21:13.
Аватар вне форума
Старый 20.09.2011, 21:13   #3
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

Спасибо!
Ваш рецепт помог - я и забыла совсем что необходимы кавычки.
И кроме того - Менеджмент студия еще взбрыкнула (почему-то) что я не указала название базы, к которой обращаюсь, хотя я при создании запроса находилась в ней. Все писала - нет прав, нет прав.... Пришлось написать use db_University.

Я конечно понимаю, что так грамотно при каждом запросе обращаться к базе по имени, еще пока не привыкнуть.
Нажимаю на весы!
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
регулярные выражения brulik67 PHP 4 24.06.2011 06:14
Регулярные выражения Vanta11a Помощь студентам 2 05.05.2011 12:44
регулярные выражения vvsh PHP 3 22.04.2011 17:09
Регулярные выражения ACE Valery PHP 5 14.10.2009 11:37