2015-08-22 5 views
3

Я пытаюсь реализовать ограничение минимальной длины в Oracle.Ограничение минимальной длины для столбца

Как я прочитал в this ответ и несколько других подобных вопросов, которые я пробовал:

ALTER TABLE my_table 
ADD CONSTRAINT MY_TABLE_PASSWORD_CK CHECK (DATALENGTH(password) >=4) 

И я получаю "DATALENGTH": invalid identifier". Я также пробовал:

(DATALENGTH([password]) >=4) 
(LEN([password]) >=4) 
(LEN(password) >=4) 

Каков текущий формат этого ограничения проверки в Oracle?

+2

Почему вы используете функции SQL Server в Oracle? –

+2

BTW: не хранить пароли в ящике в базе данных. http://stackoverflow.com/questions/1054022/best-way-to-store-password-in-database – Mat

+0

@Mat, Спасибо за предложение, его единственная база данных для тестирования –

ответ

9

DATALENGTH() возвращает длину в байтах в SQL Server. Эквивалентная функция Oracle является LENGTHB() (документально here):

ALTER TABLE my_table 
    ADD CONSTRAINT MY_TABLE_PASSWORD_CK CHECK (LENGTHB(password) >= 4) 

Однако, для ваших целей, я думаю, что длина строки будет уместно в обеих базах данных, LENGTH() в Oracle (или LEN() в SQL Server).

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