for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Лисоводы   всех   стран,  объединяйтесь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
  

Чувствительность к регистру в секции WHERE
hztp_serg

Сообщений: 575
Откуда: Хмельницкий
Дата: 29.07.20 19:40:22
Как регулировать чувствительность к регистру в условии 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

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



Исправлено: Burn, 29.07.20 20:00
Ratings: 0 negative/0 positive

Re: Чувствительность к регистру в секции WHERE
hztp_serg

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

Re: Чувствительность к регистру в секции WHERE
of63

Сообщений: 20543
Откуда: Н.Новгород
Дата: 29.07.20 20:53:26
На всякий, в фоксе:
  
  SET COLLATE TO "RUSSIAN"  
  ? "А"="а"  && .T.  
  SET COLLATE TO "machine"  
  ? "А"="а"  && .F.  
Ratings: 0 negative/0 positive

Re: Чувствительность к регистру в секции WHERE
hztp_serg

Сообщений: 575
Откуда: Хмельницкий
Дата: 29.07.20 21:03:04
of63
Это наверное оно. Спасибо!
Ratings: 0 negative/0 positive

Re: Чувствительность к регистру в секции WHERE
Igor Korolyov
Автор

Сообщений: 34021
Дата: 30.07.20 17:16:26
Есть ещё 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




Исправлено: Igor Korolyov, 30.07.20 17:18
Ratings: 0 negative/1 positive



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

On-line: 11 Rifat  (Гостей: 10)

26.01.2021 06:07:35 exec: 0.08
Mem: 1.207 Mb

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