Начало » Использование СУБД » MySQL, MariaDB » Парсирование адреса средствами mysql (Парсирование адреса средствами mysql)
Парсирование адреса средствами mysql [сообщение #2052] |
Wed, 12 April 2023 11:11 |
maksdev
Сообщений: 2 Зарегистрирован: April 2023 Географическое положение: Архангельск
|
Junior Member |
|
|
Коллеги, привет!
В общем вопрос вот какой. Имеется база данных mysql. В базе есть таблица note_bodys, следующей структуры code int, name varchar(50). В таблице содержаться улицы. Хочу создать функцию с входным параметром в который будет передаваться адрес. Нужно парсировать входной параметр в котором нужно отпарсить улицу и на выходе функции идентификатор (code) из таблицы note_bodys. Собственно вопрос, как организовать сравнение по части строки?
delimiter //
create or replace function search_street(vStreet varchar(100)) returns int(11)
begin
declare vNoteID int;
declare vNoteName varchar(50);
declare done int default 0;
declare StreetCursor for select nb_code, nb_name from note_bodys where nb_header = 6;
declare continue handler for sqlstate '0200' set done = 1;
open StreetCursor;
repeat
fetch StreetCursor into vNoteID, vNoteName;
if not done then
//Вот вариантик - только не пойму как забрать результат = 1
select locate (vNoteName, vStreet)
end if;
until done end repeat;
close StreetCursor;
return vNoteID;
end;
//
delimiter ;
[Обновления: Wed, 12 April 2023 11:54] Известить модератора
|
|
|
Re: Парсирование адреса средствами mysql [сообщение #2053 является ответом на сообщение #2052] |
Wed, 12 April 2023 13:02 |
maksdev
Сообщений: 2 Зарегистрирован: April 2023 Географическое положение: Архангельск
|
Junior Member |
|
|
Вопрос закрыт. Кому интересно - вот конечный вариант кода
delimiter //
create or replace function search_street(vAddress varchar(100)) returns int
begin
declare vNoteID int default 0;
declare vNoteName varchar(100);
declare done int default 0;
declare vCode int default 0;
declare StreetCursor cursor for select nb_code, nb_name from note_bodys where note_bodys.nb_header = 6;
declare continue handler for sqlstate '02000' set done = 1;
open StreetCursor;
repeat
fetch StreetCursor into vNoteID, vNoteName;
if not done then
select locate (replace(vNoteName,'.',''), vAddress) into vCode;
if vCode = 1 then
return vNoteId;
end if;
end if;
until done end repeat;
close StreetCursor;
return vCode;
end;
//
delimiter ;
|
|
|
Переход к форуму:
Текущее время: Thu Nov 21 21:27:32 GMT+3 2024
Общее время, затраченное на создание страницы: 0.00620 секунд
|