powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / первое слово
12 сообщений из 12, страница 1 из 1
первое слово
    #38397143
запросoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста. Есть три поля: id, fio и address. Нужно составить запрос, в котором вытягиваются данные из этих полей, но с условием, что из поля fio вытягивается только фамилия (т.е. первое слово, т.е. до первого пробела). Как это можно сделать? Посмотрел примеры для MS SQL и Access, но не смог их интерпретировать для MYSQL :(
...
Рейтинг: 0 / 0
первое слово
    #38397146
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
первое слово
    #38397160
запросoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое за ссылку, теперь разобрался!
...
Рейтинг: 0 / 0
первое слово
    #38406758
запросoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На данный момент из поля `fio` вытягиваю только фамилию (т.е. до первого пробела):
Код: sql
1.
SELECT SUBSTRING_INDEX(fio, ' ', 1) fio FROM mytable


Ввиду немногочисленных, но всё же повторов, решил добавить ещё и первую букву. Т.е. чтобы вместо нынешних "Иванов", "Петров" получалось "Иванов И", "Петров А", и т.д.. Подскажите, пожалуйста, как должен выглядеть такой запрос?
...
Рейтинг: 0 / 0
первое слово
    #38406857
запросoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
запросoffВвиду немногочисленных, но всё же повторов, решил добавить ещё и первую букву. Т.е. чтобы вместо нынешних "Иванов", "Петров" получалось "Иванов И", "Петров А", и т.д.. Подскажите, пожалуйста, как должен выглядеть такой запрос?

Извиняюсь за невнимательность: имелось ввиду "добавить ещё и первую букву второго слова", т.е. имени.
...
Рейтинг: 0 / 0
первое слово
    #38407344
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
SELECT concat(SUBSTRING_INDEX(fio, ' ', 1),left(SUBSTRING_INDEX(fio, ' ', 1),1)) fio FROM mytable
...
Рейтинг: 0 / 0
первое слово
    #38407346
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglir,

ошибочка, во втором случае надо поставить цифру 2
...
Рейтинг: 0 / 0
первое слово
    #38408113
запросoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir
Код: sql
1.
SELECT concat(SUBSTRING_INDEX(fio, ' ', 1),left(SUBSTRING_INDEX(fio, ' ', 1),1)) fio FROM mytable


Спасибо большое за отзывчивость!!!

Данные у меня на самом деле такие:
[q]Иванов Иван
Петров Алексей
Ющенко Дмитрий[/q]

Хотелось бы на выходе получить это:
[q]Иванов И
Петров А
Ющенко Д[/q]

Но с процитированным выше запросом у меня получается такой результат:

[q]ИвановИ
ПетровП
ЮщенкоЮ[/q]
Во-первых, нет пробела, во-вторых, берётся первая буква ПЕРВОГО слова и подставляется вместо первой буквы ВТОРОГО слова.

Помогите, пожалуйста, с этим. Сейчас попробовал сам пободаться, но не получается :-/
...
Рейтинг: 0 / 0
первое слово
    #38408148
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запросoffВо-первых, нет пробела,rtfm concat или даже concat_ws (там же)
запросoffво-вторых, берётся первая буква ПЕРВОГОtanglirво втором случае надо поставить цифру 2читай как "во втором субстринг_индексе"
...
Рейтинг: 0 / 0
первое слово
    #38408280
запросoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirrtfm concat или даже concat_ws (там же)
ОтRTMFил ссылки, заменил "),left(" на "), ' ', left(", получилось так:
Код: sql
1.
SELECT concat(SUBSTRING_INDEX(fio, ' ', 1), ' ', left(SUBSTRING_INDEX(fio, ' ', 1),1)) fio FROM mytable


Ок, первый вопрос закрыт.


tanglirво втором случае надо поставить цифру 2 читай как "во втором субстринг_индексе"
Не понимаю, о какой двойке и о каком втором случае идёт речь :(
Делаю так:
Код: sql
1.
SELECT concat(SUBSTRING_INDEX(fio, ' ', 1), ' ', left(SUBSTRING_INDEX(fio, ' ', 2),1)) fio FROM mytable


в ответ получаю:
Иванов И
Петров П
Ющенко Ю

Делаю так:
Код: sql
1.
SELECT concat(SUBSTRING_INDEX(fio, ' ', 1), ' ', left(SUBSTRING_INDEX(fio, ' ', 1),2)) fio FROM mytable


в ответ получаю:
Иванов Ив
Петров Пе
Ющенко Ющ

Делаю так:
Код: sql
1.
SELECT concat(SUBSTRING_INDEX(fio, ' ', 1), ' ', left(SUBSTRING_INDEX(fio, ' ', 2),2)) fio FROM mytable


в ответ получаю:
Иванов Ив
Петров Пе
Ющенко Ющ
...
Рейтинг: 0 / 0
первое слово
    #38408317
запросoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче, вывихнул свой мозг и сделал так:
Код: sql
1.
SELECT concat(SUBSTRING_INDEX(fio, ' ', 1), ' ', left(SUBSTRING_INDEX(SUBSTRING_INDEX(fio, ' ', 2), ' ', -1), 1)) fio FROM mytable



Не знаю, насколько это кошерно и соответствует правилам, но работает так, как мне надо.


tanglir
Спасибо ещё раз!
...
Рейтинг: 0 / 0
первое слово
    #38409180
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запросoff, это я сам вас ввёл в заблуждение - почему-то посчитал, что субиндекс выбирает только N-е "слово", а не всю строку до N-го разделителя :) Ну, главное, что у вас всё-таки получился рабочий запрос. А насчёт "кошерно и соответствует правилам" - netwind вчера хорошо написал: netwindpachimuta грамотно сконфигурировать MySQL где сервер имеет 32Gb RAM
Да никак. "Грамотность" в IT - оправдание для шаблонности мышления. Все, что удовлетворяет вашим запросам - грамотно.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / первое слово
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]