2009-02-26 9 views
0

я создал информационную таблицу, которая хранит сотрудник запись, SQL запрос для его следующим образом ...Wildcard символов в чеке в НАПИСАТЬ таблицу взята в виде строки

CREATE TABLE info1 (
    empid VARCHAR(8) PRIMARY KEY CONSTRAINT empchk 
     CHECK (empid IN ('kh\%' ESCAPE '\''), 
    initials CHAR(6), fname CHAR(25) NOT NULL, 
    lname CHAR(25), 
    userstatus INTEGER NOT NULL, 
    designation CHAR(10) NOT NULL 
); 

Теперь, как вы можете видеть ограничение в empid является kh% где - насколько я помню - % означает, что любое количество следующих символов (ограничено 8, конечно) может быть чем угодно, не так ли?

Я использую Java DB и странно он принял % символ также быть частью строки, так что если я вхожу khce0001, это говорит empchk нарушение, он принимает только в kh%

Что я должен делать? Почему это происходит?

ответ

1

Ошибка в этом SQL запроса является то, что я использовал IN вместо LIKE (который я считаю, делает подстановочные проверки), так

  • Я уронил ограничение с ...

    ALTER TABLE info DROP CONSTRAINT empchk; 
    
  • и изменили таблицу с ...

    ALTER TABLE info ADD CONSTRAINT empchk CHECK (empid LIKE ('kh%')); 
    
  • и, следовательно, правильный SQL-запрос должен был ...

    CREATE TABLE info1 (
        empid VARCHAR(8) PRIMARY KEY CONSTRAINT empchk 
         CHECK (empid LIKE ('kh%')), 
        initials CHAR(6), 
        fname CHAR(25) NOT NULL, 
        lname CHAR(25), 
        userstatus INTEGER NOT NULL, 
        designation CHAR(20) NOT NULL 
    ); 
    
+0

хорошо, что вы были в состоянии выяснить. рассмотрите вопрос о закрытии вопроса –

+0

@Unkown: если это было решение, вы должны отметить свой собственный ответ как принятый! – Sk8erPeter

 Смежные вопросы

  • Нет связанных вопросов^_^