Форум: "Начинающим";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
ВнизПоиск любого слова в базе Найти похожие ветки
← →
Viktop (2005-10-07 13:05) [0]Помогите составить запрос
Имеется база с полями (ФИО, Статья, Ключевые слова). Надо, чтобы искалось хотябы отдно слово (а не вся фраза) из указанного поля.
Делаю так:SELECT * FROM base WHERE FIO="Айзенберг Б.И."
Находит только те записи, где значение поля равно Айзенберг Б.И., а если в поле значение Айзенберг Б.И., Белопольская Н.Л., то не находит
P.S.: в примере указана * т.к. если пишу название любого поля (FIO, Article и др.), то выдаётся сообщение quFind: Field "Key" not found.. Названия указавыл, которые задавал в Database Desktop
← →
Drakosha © (2005-10-07 13:14) [1]почитай про LIKE
← →
Viktop (2005-10-07 13:20) [2]Точно. Спасибо
← →
Viktop (2005-10-07 13:21) [3]А про 2-й вопрос усть идеи?
← →
Drakosha © (2005-10-07 13:36) [4]Ну какие тут могут быть идеи... нету у тя поля key и всё тут
← →
Viktop (2005-10-07 13:43) [5]Как нет. В самой базе точно есть (оно ключевое) и причём тут оно?
← →
Drakosha © (2005-10-07 14:51) [6]сбрось скрипт по созданию таблицы и селект неработающий
← →
Viktop (2005-10-07 14:57) [7]
SELECT * FROM sobsno\base WHERE fio LIKE "%Кочунас%"
Что имеется ввиду под скриптом?
← →
msguns © (2005-10-07 15:21) [8]>Viktop (07.10.05 14:57) [7]
>SELECT * FROM sobsno\base WHERE fio LIKE "%Кочунас%"
>Что имеется ввиду под скриптом?
Дракоша хотел от тебя список полей таблицы БД, чтобы проверить имеется ли там поле с именем "KEY", ты же ему сунул свой запрос, где вообще нетути нифига, кроме *, типа вывести все поля.
SQL-текст, создающий таблицы БД (и не только), называется скриптом. Из такого "креативного" скрипта можно: во-первых быстро создать БД на "чистом" компе, во-вторых, "прочитать" всю информацию (бизнес-правила), заложенную в БД. В том числе и о такуй "мелочи", как структуры таблиц.
Некоторые серверы имеют такую фичу - выгрузку всей бизнес-логики или указанных частей в скрипты.
← →
msguns © (2005-10-07 15:24) [9]>Viktop (07.10.05 14:57) [7]
>SELECT * FROM sobsno\base WHERE fio LIKE "%Кочунас%"
Не все сервера одинаково трактуют символ "%" как "что угодно". Укажи Сервер (тип) БД
← →
Viktop (2005-10-07 15:28) [10]БД-Paradox
Наверное этот список полей:
object TableKey: TAutoIncField
FieldName = "Key"
ReadOnly = True
end
object TableFIO: TStringField
FieldName = "FIO"
Size = 255
end
object TableArticle: TStringField
FieldName = "Article"
Size = 255
end
object TableKeyWords: TStringField
FieldName = "KeyWords"
Size = 255
end
object TableNomber: TSmallintField
FieldName = "Nomber"
end
object TableStr: TSmallintField
FieldName = "Str"
end
object TableYear: TSmallintField
FieldName = "Year"
end
← →
Drakosha © (2005-10-07 16:18) [11]оно ругается только на поле "key"?
всмысле:select FIO,Article,KeyWords,Nomber,Str,Year FROM sobsno\base WHERE fio LIKE "%Кочунас%"
проходит нормально?
если так то возможно key это какое нить ключевое слово и его нельзя использовать в имени поля, если не так....то даж не знаю...
← →
Viktop (2005-10-07 17:08) [12]Если вставить в запрос
select FIO,Article,KeyWords,Nomber,Str,Year FROM sobsno\base WHERE fio LIKE "%Кочунас%"
, то пишет
Invalid use of keyword
Token: Year
Line Number: 1
А если так:select Nomber FROM sobsno\base WHERE fio LIKE "%Кочунас%"
, то
quFind: Field "Key" not found.
← →
Anatoly Podgoretsky © (2005-10-07 19:32) [13]Во первых двойной щелчок по таблице и удалить все поля из списка
Во вторых слово YEAR резервированое имя
← →
Viktop (2005-10-08 06:56) [14]Спасибо. Помогло.
← →
Viktop (2005-10-09 09:09) [15]И ещё вопрос: Как сделать запрос не чуствительным к регистру?
← →
Anatoly Podgoretsky © (2005-10-09 13:39) [16]Запрос к регистру не чуствителен, чуствительны базы данных и индексы. Для Парадокса решения не знаю, но всегда можно привести к одному регистру, но Парадокс не сможет это сделать правильно для русских букв. Переходи на другую базу, если хочешь остаться на десктопный, то на dBase там реализуемо. Можно на Акцесс, но не проверял по этой части, но думаю что порядок, а с Парадоксом просто забудь про это.
← →
Anatoly Podgoretsky © (2005-10-09 13:40) [17]Попробую предположить - Архангелького читал при выборе базы.
← →
Viktop (2005-10-09 16:40) [18]Решение нашёл. Вот кусок
...
str := LowerCase("%" + cbFind.Text + "%");
...
// f - имя поля
quFind.SQL.Add("WHERE LOWER (" + f + ") LIKE """ + str + """");
...
← →
Anatoly Podgoretsky © (2005-10-09 18:48) [19]теперь проверь LOWER("ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ")
← →
Viktop (2005-10-09 21:25) [20]
> теперь проверь LOWER("ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ")
Блин. Это только если вся строка в верхнем регистре?
← →
Drakosha © (2005-10-11 10:48) [21]нет. это для любых русских букв
← →
Viktop (2005-10-11 16:23) [22]
> нет. это для любых русских букв
Странно. Есть в записи строка Кочунас, если искать кочунас, то находит
← →
0bsid (2005-10-14 21:55) [23]>И ещё вопрос: Как сделать запрос не чуствительным к регистру?
"Предикат CONTAINING аналогичен предикату LIKE, за исключением того,
что он не чувствителен к регистру букв. Разрешено также использовать
конструкцию NOT CONTAINING."
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.06;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.044 c