@OrdeO
just......newbie

Как вырезать нужную часть предложения с помощью MySQL?

Есть таблица с колонкой homes, в которой значения вот такого вида
Village of Eau Claire - Home 83
Village of Eau Claire - Home 95
City of Edgerton - Home 1
City of Edgerton - Home 2
City of Edgerton - Home 3
City of Edgerton - Home 4
City of Edgerton - Home 5
City of Edgerton - Home 6
Town of Elkhorn - Home 1
Town of Elkhorn - Home 2

Можно ли с помощью запроса получить только короткие версии городов, вот так: Eau Claire, Edgerton, Elkhorn
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ответы на вопрос 2
@alexalexes
Можно с помощью функции SUBSTRING_INDEX.
Два раза применяете эту функцию:
1. Получаете часть строки "Eau Claire - Home 83", указав разделитель " of ", а номер -1.
2. Получаете часть строки "Eau Claire", указав разделитель " - ", а номер 1.
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Не делайте так!

SQL язык запросов, вот и делайте запросы, а код выносите в приложение на любом языке общего назначения.
Это позволит вам иметь понятный код на всех уровнях.

Единственное условие когда используется код в базе, это очень старый код или особые требования к перфомансу (Очень особые)

DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `getcity`(fullname NVARCHAR(200)) RETURNS varchar(100) CHARSET utf8
BEGIN
 return SUBSTRING_INDEX(SUBSTRING_INDEX( fullname, " of ", -1), " - ", 1);
END$$
DELIMITER ;


SELECT id, name , getcity(name) as city_namegethouse, gethouse(name) as house_num FROM test.cityes;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы