Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / первое слово / 12 сообщений из 12, страница 1 из 1
15.09.2013, 21:37:35
    #38397143
запросoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
первое слово
Подскажите, пожалуйста. Есть три поля: id, fio и address. Нужно составить запрос, в котором вытягиваются данные из этих полей, но с условием, что из поля fio вытягивается только фамилия (т.е. первое слово, т.е. до первого пробела). Как это можно сделать? Посмотрел примеры для MS SQL и Access, но не смог их интерпретировать для MYSQL :(
...
Рейтинг: 0 / 0
15.09.2013, 21:48:13
    #38397146
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
первое слово
...
Рейтинг: 0 / 0
15.09.2013, 22:34:19
    #38397160
запросoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
первое слово
Спасибо большое за ссылку, теперь разобрался!
...
Рейтинг: 0 / 0
25.09.2013, 08:48:23
    #38406758
запросoff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
первое слово
На данный момент из поля `fio` вытягиваю только фамилию (т.е. до первого пробела):
Код: sql
1.
SELECT SUBSTRING_INDEX(fio, ' ', 1) fio FROM mytable


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

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

ошибочка, во втором случае надо поставить цифру 2
...
Рейтинг: 0 / 0
26.09.2013, 10:50:22
    #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
26.09.2013, 11:22:06
    #38408148
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
первое слово
запросoffВо-первых, нет пробела,rtfm concat или даже concat_ws (там же)
запросoffво-вторых, берётся первая буква ПЕРВОГОtanglirво втором случае надо поставить цифру 2читай как "во втором субстринг_индексе"
...
Рейтинг: 0 / 0
26.09.2013, 12:51:28
    #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
26.09.2013, 13:10:26
    #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
27.09.2013, 05:35:45
    #38409180
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
первое слово
запросoff, это я сам вас ввёл в заблуждение - почему-то посчитал, что субиндекс выбирает только N-е "слово", а не всю строку до N-го разделителя :) Ну, главное, что у вас всё-таки получился рабочий запрос. А насчёт "кошерно и соответствует правилам" - netwind вчера хорошо написал: netwindpachimuta грамотно сконфигурировать MySQL где сервер имеет 32Gb RAM
Да никак. "Грамотность" в IT - оправдание для шаблонности мышления. Все, что удовлетворяет вашим запросам - грамотно.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / первое слово / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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