2013-05-05 3 views
0

У меня возникли проблемы с определением того, как выбирать слова, которые имеют первую букву, а затем остальные как uncap?SQL Simple Query (CAPS)

Любая помощь будет оценена по достоинству.

Я попытался следующие:

SELECT * from student WHERE REGEXP_LIKE (student.firstname, '[A-Z]+[a-zA-Z]*') AND REGEXP_LIKE (student.lastname, '[A-Z]+[a-zA-Z]*'); 

но проверяет только первую букву и игнорировать письма после этого.

+0

Вы 'regex' описывает следующую картину:' 1 или more' заглавные буквы а затем '0 или more' верхний регистр и/или строчными буквами. –

+0

Как я могу изменить его так, чтобы он дал мне строки, которые имеют имя «Aaaaa» и фамилию «Aaaaa». И не те, которые имеют «AAaa» или «AaaAa». –

+0

Я считаю, что пример WarrenT должен был работать. Вы указали, что нет. Какую систему на базе SQL вы используете? –

ответ

4

Вам нужен якорь, чтобы убедиться, что вы полностью совпадать с именем.

REGEXP_LIKE (student.firstname, '^[A-Z][a-z]*$') 

Я хотел бы упомянуть, что решение, основанное исключительно на a-z, является чрезвычайно хрупким.

2

Как насчет:

REGEXP_LIKE (student.firstname, '[A-Z][a-z]*') 
+0

не работает. –

+0

@SohelMansuri - Какая у вас RDBMS (вкус SQL)? Это MySql, SQL Server, Oracle и т. Д.? –

+0

Я использую Oracle SQL Developer. –

2

В современном Oracle вы можете использовать Классы символов.

Так еще один способ получить ту же функциональность будет:

REGEXP_LIKE(somename, '^[[:upper]][[:lower:]]*$') 
+0

Вам нужен якорь '^', или AaAaa по-прежнему будет соответствовать. – melwil

+0

@melwil - Ты прав. Исправлена. –

1

Вам может понадобиться, чтобы убедиться, что вы выполняете регистрозависимое согласование.

The documentation для REGEXP_LIKE это сказать о случае чувствительности:

RTM

параметр_сопоставление представляет собой текстовый литерал, который позволяет изменить поведение по умолчанию соответствия функции. Вы можете указать одно или несколько из следующих значений для match_parameter:

  • «i» указывает совпадение по регистру.

  • «c» задает соответствие с учетом регистра.

...

Если опустить параметр_сопоставления, то: чувствительность к регистру

  • по умолчанию определяется значением параметра NLS_SORT.