Вопрос, а как сдклать сабж? Пример:
select some_field from some_table
where another_field /*строковое поле!*/="AAAAAA";
Хочется, чтобы не учитывался регистр букв у этого "AAAAAA"
Здравствуйте Kai, Вы писали:
Kai>Вопрос, а как сдклать сабж? Пример: Kai>select some_field from some_table Kai>where another_field /*строковое поле!*/="AAAAAA"; Kai>Хочется, чтобы не учитывался регистр букв у этого "AAAAAA"
А база какая? Вот пример реальных запросов к моей базе (MS SQL Server 7.0):
SELECT * FROM CLientNames WHERE ClientName='Lana'
SELECT * FROM CLientNames WHERE ClientName='LaNa'
SELECT * FROM CLientNames WHERE ClientName='laNa'
SELECT * FROM CLientNames WHERE ClientName='LANA'
F>А база какая? Вот пример реальных запросов к моей базе (MS SQL Server 7.0):
Sybase SQL Anywhere
F>
F>SELECT * FROM CLientNames WHERE ClientName='Lana'
F>SELECT * FROM CLientNames WHERE ClientName='LaNa'
F>SELECT * FROM CLientNames WHERE ClientName='laNa'
F>SELECT * FROM CLientNames WHERE ClientName='LANA'
F>
F>Результаты одинаковы — регистр не учитывается...
Просто LANA — короткое слово, поэтому так мадо вариантов перебора
Здравствуйте Kai, Вы писали:
Kai>Здравствуйте vav, Вы писали:
vav>>select some_field from some_table vav>>where UPPER(/*строковое поле!*/)=UPPER("AAAAAA"); Kai>Спасибо!
Ne zabivajte, chto ispolzovanie funkcii na pole ne pozvolajet ispol'zovat' index.
variant resheniya -- 2 polja + trigger. Odno dlya osnovnogo znacheniya, vtoroye indexirovannoe dly UPPER. Vtoroye pole obnovlyaetsa v triggere. Togda:
vash zapros:
select some_filed from some_table
where upper_string_field_indexed = upper("AAAA")
obnovlenie:
update some_table set string_filed = "AaAaAa"
trigger (psevdo sintaxis, Ya poslednee vremya s Oraclom rabotayu):
create trigger on insert, update of some_table as
begin
update inserted set upper_string_field_indexed = UPPER( some_field )
end
Встречный вопрос:
база: MS SQL Server.
Как сделать case-sensitive запрос.
Т.е. действительно
select * from Table where field='xxx'
Возвращает записи где filed='XXX' и 'xXx' и т.д.
Здравствуйте, Maxis, Вы писали:
M>как это настраивается?
Через COLLATION.
Collation может быть Case Sensitive — в названии есть _CS_ или Insensitive — в названии _CI_. Например, Cyrillic_General_CS_AI — обращает внимание на регистр, а Cyrillic_General_CI_AI — не обращает.
Таким образом, запрос вида
select * from Table where field COLLATE Cyrillic_General_CS_AI ='xxx'
Отберет только xxx, но не XXX и XxX.
Можно так же поменять COLLATION в отдельно взятом поле таблицы (с помощю ALTER TABLE) или во всей базе (ALTER DATABASE).