Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.037 c
14-1129208586
TUser
2005-10-13 17:03
2005.11.06
Автоматическое изменение кода


11-1110474132
Ans
2005-03-10 20:02
2005.11.06
DB, индексы


2-1129119784
Del_programmer
2005-10-12 16:23
2005.11.06
Динамика


2-1128951923
Gomez
2005-10-10 17:45
2005.11.06
Удаление рисунка


2-1129309908
redlord
2005-10-14 21:11
2005.11.06
locate поиск по нескольким полям





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский