Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.08.2011, 13:47   #1
Gevs
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 10
Восклицание like был чувствителен к регистру

Как сделать, что бы like выбирал только слова начинающиеся с 'П', а то like 'П*' выбирает и те, которые начинаются на 'П' и на 'п'.
Gevs вне форума Ответить с цитированием
Старый 17.08.2011, 16:41   #2
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Знак процента используй

Код:
like П%
Gulik вне форума Ответить с цитированием
Старый 17.08.2011, 16:47   #3
Gevs
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 10
По умолчанию

fname:='%П%';
ADOQuery1.SQL.Add('SELECT *');
ADOQuery1.SQL.Add('FROM Table1');
ADOQuery1.SQL.Add('WHERE fname LIKE '''+fname+'''');
Gevs вне форума Ответить с цитированием
Старый 17.08.2011, 22:34   #4
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Код:
   fname := 'П' ;
   ADOQuery1.SQL.Text := 'SELECT * FROM Table1 WHERE fname LIKE ''%' + fname + '%''' ;
Чтобы не было проблем с регистром используй Upper
Функция Upper служит для приведения к верхнему регистру т.е. (П->П п->П)
Код:
   fname := 'П' ;
   ADOQuery1.SQL.Text := 'SELECT * FROM Table1 WHERE upper(fname) LIKE upper(''%' + fname + '%'')' ;
Но я как понял тебе нужно выбирать слова начинающиеся на П тогда делай так:
Код:
   fname := 'П' ;
   ADOQuery1.SQL.Text := 'SELECT * FROM Table1 WHERE upper(fname) LIKE upper(''' + fname + '%'')' ;
Т.е. без первого знака %
Gulik вне форума Ответить с цитированием
Старый 17.08.2011, 22:37   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

имхо, LIKE всегда был регистро независимым...

возможно (подчёркиваю ВОЗМОЖНО) в каких-то СУБД это и настраивается...

Gevs, у Вас какая СУБД? в общем случае может помочь уточнение запроса с помощью использования поиска подстроки в строке.
например, для Oracle:
Код:
SELECT * FROm Table1 
  where fname like '%П%'
      and (instr(fname, 'П')>0)
тот же пример для Oracle, но найти слова начинающиеся с большой П
Код:
SELECT * FROm Table1 
  where fname like 'П%'
      and (instr(fname, 'П')=1)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.08.2011, 09:20   #6
Gevs
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 10
По умолчанию

access мне нужно чтоб в каком регистре написать нашел только этот...
вот код:

fname:='%п%';
ADOQuery1.SQL.Add('SELECT *');
ADOQuery1.SQL.Add('FROM Table1');
ADOQuery1.SQL.Add('WHERE fname LIKE '''+fname+'''');

чтоб нашел только слова в которых "п"
Gevs вне форума Ответить с цитированием
Старый 18.08.2011, 09:46   #7
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Цитата:
Сообщение от Gevs Посмотреть сообщение
access мне нужно чтоб в каком регистре написать нашел только этот...
вот код:

Код:
fname:='%п%';
ADOQuery1.SQL.Add('SELECT *');
ADOQuery1.SQL.Add('FROM Table1');
ADOQuery1.SQL.Add('WHERE fname LIKE '''+fname+'''');
чтоб нашел только слова в которых "п"
Не плохо было бы и знаки препинания соблюдать, а то первое предложение я не понял
Gulik вне форума Ответить с цитированием
Старый 18.08.2011, 09:52   #8
Gevs
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 10
По умолчанию

у меня база на access.
мне нужно чтоб нашел только слова в которых "п"

fname:='%п%';
ADOQuery1.SQL.Add('SELECT *');
ADOQuery1.SQL.Add('FROM Table1');
ADOQuery1.SQL.Add('WHERE fname LIKE '''+fname+'''');
Gevs вне форума Ответить с цитированием
Старый 18.08.2011, 10:03   #9
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Ну, и что... У тебя с кодом проблема? Тебе же уже все тут написали, что-то не работает?
Gulik вне форума Ответить с цитированием
Старый 18.08.2011, 10:06   #10
Gevs
Пользователь
 
Регистрация: 22.04.2011
Сообщений: 10
По умолчанию

проблема такая, должен найти только 'п', а находит 'П' и 'п'...
Gevs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск на всем ПК не чуств. к регистру Человек_Борща Общие вопросы Delphi 11 02.07.2011 00:04
Привод к нижнему регистру Алексей Егораев Помощь студентам 0 02.03.2011 17:18
Чувствительность к регистру Krasi PHP 1 20.07.2010 20:17
Жил был Windows unicode Windows 37 18.05.2009 15:34
как сделать не восприимчивость к регистру при работе с файлами? LeoN Общие вопросы Delphi 7 31.03.2007 15:41