:: Visual Foxpro, Foxpro for DOS
Чувствительность к регистру в секции WHERE
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
Как регулировать чувствительность к регистру в условии WHERE запроса SELECT - SQL? Например:
SELECT * FROM tSF WHERE f_ext = 'ZIP'
SELECT * FROM tSF WHERE f_ext = 'zip'
мне нужно чтобы чувствительности к регистру не было.
Ratings: 0 negative/0 positive
Re: Чувствительность к регистру в секции WHERE
Burn

Сообщений: 5640
Откуда: Днепр
Дата регистрации: 02.01.2002
Запрос к какому SQL-серверу?
MS SQL регистронезависимый.
В фоксе можно привести к одному виду:
SELECT * FROM tSF WHERE Upper(f_ext) = Upper('zip')



Исправлено 2 раз(а). Последнее : Burn, 29.07.20 20:00
Ratings: 0 negative/0 positive
Re: Чувствительность к регистру в секции WHERE
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
Запрос в фоксе. Функция UPPER( ) переводит символы к верхнему регистру - это хорошо. Я думал что чувствительность можно включать или отключать с помощью команды SET. У меня получается, что когда я выполняю запрос из проекта, то чувствительности нет, а когда из exe-ка - то есть.
Ratings: 0 negative/0 positive
Re: Чувствительность к регистру в секции WHERE
of63

Сообщений: 25161
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
На всякий, в фоксе:
SET COLLATE TO "RUSSIAN"
? "А"="а" && .T.
SET COLLATE TO "machine"
? "А"="а" && .F.
Ratings: 0 negative/0 positive
Re: Чувствительность к регистру в секции WHERE
hztp_serg
Автор

Сообщений: 577
Откуда: Хмельницкий
Дата регистрации: 19.06.2007
of63
Это наверное оно. Спасибо!
Ratings: 0 negative/0 positive
Re: Чувствительность к регистру в секции WHERE
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Есть ещё Collate "General".
Но в этом варианте и все индексы по символьным выражениям должны быть созданы в той же самой collation - иначе они не бдут использоваться для оптимизации.
P.S. MSSQL вовсе не "регистронезависимый" - он точно так-же управляется collation-ами, которые могут быть как регистрочувствительными (суффикс _CS в имени collation), так и нет (суффикс _CI) в отличие от фокса они ещё и на 4 разных уровнях могут быть установлены (весь сервер, некоторая база данных, отдельная колонка, отдельное выражение в запросе). В фоксе по сути лишь 2 уровня - уровень датасессии (все запросы, и операции сравнения в рамках данной датасессии - устанавивается через SET COLLATE, ну и опцию COLLATE конфиг-файла для глобальной датасессии - может быть конечно и переопределено командой) и уровень отдельного индекса (НО на самом деле этим нельзя напрямую воспользоваться в запросах или выражениях - только явно используя индекс, например SET ORDER или SEEK - да и то поведение НЕ идентично тому что будет при переключении настройки через SET COLLATE)
P.P.S. использование UPPER или LOWER для "унификации" регистра символов - вполне себе вариант - имеет свои плюсы по сравнению с SET COLLATE. Правда и писать эти функции придётся везде и всегда - и в запросах, и в выражениях сравнения...


------------------
WBR, Igor




Исправлено 1 раз(а). Последнее : Igor Korolyov, 30.07.20 17:18
Ratings: 0 negative/1 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 24 (Гостей: 24)

© 2000-2024 Fox Club 
Яндекс.Метрика