На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается для обсуждения вопросов использования баз данных, за исключением составления запросов на SQL. Для этого выделен специальный раздел. Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Chow, Bas, MIF
  
> Возможно ли создать ограничение check с LIKE или еще как-то... , SQL Server 2 000
    Всем привет!
    Сразу к делу.
    Есть простейшая таблица "Клиент".
    ExpandedWrap disabled
      create table Client
      (
        IDClient integer unique not null,
        Name nvarhcar(100) not null,
        Age integer check (Age > 0)
      );


    Можно ли дописать ограничение check для поля Name, чтобы контролировать не попадание цифр? То есть, если производится попытка добавить имя, в котором встречается любая цифра, то вставка не производится!

    P.S. Думаю, что на триггер Insert можно добавить проверку, но мне нужно выяснить про check.
      Ну вообще-то СУБД надо указывать...
      По сабжу -check требует простого формулирования выражения, которое возвращает True или False. Выражение с использованием Like вполне отвечает этому требованию. Только для проверки на цифры желателен регёксп, а в некоторых диалектах этим занимается другое выражение.
        Цитата Akina @
        Ну вообще-то СУБД надо указывать...

        Так я вроде указал, что MS SQL Server 2000 (это вроде бы 7-ка). Или нужно было еще дописать MS = MicroSoft. ;)

        Цитата Akina @
        Только для проверки на цифры желателен регёксп, а в некоторых диалектах этим занимается другое выражение

        Т е нужно построить регулярное выражение, используя предикат LIKE, да? А разве это возможно в 7-ке?
          Цитата FasterHarder @
          Так я вроде указал, что MS SQL Server 2000

          Пардон, просмотрел. Хвост сабжа - не самое читаемое место...


          Цитата FasterHarder @
          это вроде бы 7-ка

          Нет, это именно 2000.

          Цитата FasterHarder @
          Т е нужно построить регулярное выражение, используя предикат LIKE, да?

          Да. Вероятно, получится нечто типа
          ExpandedWrap disabled
            CHECK (Name NOT LIKE '%[0-9]%')
            Цитата Akina @
            Да. Вероятно, получится нечто типа

            Выражаю персональное спс!

            P.S. Все теперь отлично работает. Нужно регулярки знать и тогда можно будет вешать сложные проверки на check!
              В 2000-м LIKE простой как две копейки...
              Wildcard characterDescription
              %Any string of zero or more characters.
              _ (underscore)Any single character.
              [ ]Any single character within the specified range ([a-f]) or set ([abcdef]).
              [^]Any single character not within the specified range ([^a-f]) or set ([^abcdef]).
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0309 ]   [ 16 queries used ]   [ Generated: 19.03.24, 10:34 GMT ]