Firebird. Поиск по словам целиком.

Модератор: Модераторы

Firebird. Поиск по словам целиком.

Сообщение Ustas » 25.01.2014 15:27:31

Как в select записать условие, при котором выборка шла по записям где есть искомое слово, но не производные от этого слова, с учетом того, что вокруг это того слова был не только пробел (с этим то вопросов не было бы), а и различные скобки, знаки препинания и д.р.
Ustas
постоялец
 
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: Firebird. Поиск по словам целиком.

Сообщение Little_Roo » 25.01.2014 16:51:13

like ? Не оно?
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Firebird. Поиск по словам целиком.

Сообщение Ustas » 25.01.2014 17:16:13

like вместе со словом МИР найдет МИРЫ, СМИРНЫЙ.
А мне надо именно МИР, с вариантами "МИР", (МИР), МИР, , МИР. и т.д.
Ustas
постоялец
 
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: Firebird. Поиск по словам целиком.

Сообщение Little_Roo » 25.01.2014 18:13:23

Может, на http://www.sql.ru точнее и быстрее ответят? :shock:
Аватара пользователя
Little_Roo
энтузиаст
 
Сообщения: 639
Зарегистрирован: 27.02.2009 19:56:36
Откуда: Санкт-Петербург

Re: Firebird. Поиск по словам целиком.

Сообщение *Rik* » 25.01.2014 18:17:33

Через OR разные варианты условий для Like не пробовали перечислить, только поиск соответственно будет долгим..
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 451
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Firebird. Поиск по словам целиком.

Сообщение svk12 » 25.01.2014 18:35:27

Ustas писал(а):"МИР", (МИР), МИР, , МИР. и т.д.


Код: Выделить всё
Containing '"МИР"' or Containing '(МИР)' or Containing 'МИР,' or Containing 'МИР.' or ...
svk12
постоялец
 
Сообщения: 408
Зарегистрирован: 09.06.2008 18:42:47

Re: Firebird. Поиск по словам целиком.

Сообщение Valentin » 26.01.2014 18:16:37

Юстас, написал процедура о твоем проблеме.
Таблица -> Резултат:
"МИР" -> "МИР"
(МИР) -> (МИР)
xxxМИР, -> МИР,
xxxxМИРxxx -> МИР
"МИР. -> "МИР.
xx"МИР"хх - > "МИР"

Код: Выделить всё
CREATE OR ALTER PROCEDURE SELECT_NEAR (
    VAL_INPUT VARCHAR(15) )
RETURNS (
    BUF VARCHAR(15),
    OUT_STR VARCHAR(15) )
AS
DECLARE VARIABLE first_char_pos INTEGER;
DECLARE VARIABLE last_char_pos INTEGER;
DECLARE VARIABLE left_char_pos INTEGER;
DECLARE VARIABLE right_char_pos INTEGER;
DECLARE VARIABLE prefix VARCHAR(1);
DECLARE VARIABLE suffix VARCHAR(1);
BEGIN
  FOR SELECT f1 FROM T1 WHERE f1 CONTAINING :val_input INTO :buf
  DO
  BEGIN
    out_str = val_input;

    first_char_pos = POSITION(val_input IN buf);
    IF (first_char_pos < 1) THEN first_char_pos = 1;
   
    last_char_pos = first_char_pos + CHAR_LENGTH(val_input) - 1;
   
    IF (first_char_pos > 1) THEN
      left_char_pos = first_char_pos - 1;
    ELSE 
      left_char_pos = 1;
     
    right_char_pos = last_char_pos + 1;

    prefix = '';
    suffix = '';

    IF (SUBSTRING(buf from left_char_pos for 1) IN ('"', '(', ')', ',', '.')) THEN
      prefix = SUBSTRING(buf from left_char_pos for 1);
 
    IF (SUBSTRING(buf from right_char_pos for 1) IN ('"', '(', ')', ',', '.')) THEN
        suffix = SUBSTRING(buf from right_char_pos for 1);

    out_str = prefix || out_str || suffix;
    SUSPEND;
  END
END
Valentin
незнакомец
 
Сообщения: 9
Зарегистрирован: 24.01.2006 20:45:56
Откуда: Болгария

Re: Firebird. Поиск по словам целиком.

Сообщение Ustas » 26.01.2014 19:08:48

Спасибо за варианты, попробую, для полного :idea: , SIMILAR TO помучить... :D
Ustas
постоялец
 
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Re: Firebird. Поиск по словам целиком.

Сообщение Ustas » 12.02.2014 13:28:08

Вот как-то так:
Код: Выделить всё
SELECT поле FROM таблица
WHERE поле SIMILAR TO '_%[[:SPACE:]!"#$%&,-.]поиск_*'
   OR поле SIMILAR TO 'поиск_*'
ORDER BY поле


Хотя, так до конца и не разобрался с синтаксисом... :oops:
Ustas
постоялец
 
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru