Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Обрезать строку с конца / 25 сообщений из 45, страница 1 из 2
10.02.2014, 11:53:44
    #38555443
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Надо в mysql как бы обрезать строку с конца по пробелу.

Если текст:
"privet ira kis"
Надо получить
"privet ira"

Если текст:
"privet ivan"
Надо получить привет
"privet"

Как это сделать?
сам запрос примерно такой
Код: sql
1.
Update tabl set param={тут нужно обработать строку} WHERE color='red'



То есть надо отбросить считая с конца строку до первого пробела
Помогите пожалуйста как это сделать?
...
Рейтинг: 0 / 0
10.02.2014, 11:59:06
    #38555453
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
REVERSE(SUBSTRING_INDEX(REVERSE()))
...
Рейтинг: 0 / 0
10.02.2014, 12:02:40
    #38555460
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Не понял.
Нужно вот так:
Код: sql
1.
Update tabl set param1=CONCAT(  [удалить из param1 пробел и слово с конца ], 'stroka') Where color='red'
...
Рейтинг: 0 / 0
10.02.2014, 12:05:29
    #38555465
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
...
Рейтинг: 0 / 0
10.02.2014, 12:09:15
    #38555469
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
уже читал. по этому и обратился за помощью. попробовал как ты посоветовал не получается.
заранее спасибо если кто то поможет!
...
Рейтинг: 0 / 0
10.02.2014, 12:12:45
    #38555478
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Код: sql
1.
SUBSTRING_INDEX('privet ira kis', ' ', -1)
...
Рейтинг: 0 / 0
10.02.2014, 12:13:20
    #38555479
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Надо если строка "111 222 333" получилось "111 222"
если строка "555 666" получилось "555"

твой метод не работает. с твоим методом получается "111" вместо ""111 222"
...
Рейтинг: 0 / 0
10.02.2014, 12:15:15
    #38555481
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
miksoft, твой код возвращает kis
а надо privet ira
...
Рейтинг: 0 / 0
10.02.2014, 12:21:27
    #38555490
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
У кого опыт большой, подскажите пожалуйста как реализовать задачу?
...
Рейтинг: 0 / 0
10.02.2014, 12:37:31
    #38555506
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Получилось сделать, вот так работает:
select REVERSE( SUBSTRING(REVERSE('111 222 333', instr(REVERSE('111 222 333'),' ')) )
Но это очень огромный код получился, и думаю будет нагружать mysql
Можно ли сделать проще и красивее????
...
Рейтинг: 0 / 0
10.02.2014, 12:46:25
    #38555521
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Ты разницу между SUBSTRING_INDEX и SUBSTRING видишь, не? они даже по длине раличаются, не говоря уж о выполняемой функции.
...
Рейтинг: 0 / 0
10.02.2014, 12:47:59
    #38555525
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
sql999966miksoft, твой код возвращает kis
а надо privet iraДа, сорри, был невнимателен.
...
Рейтинг: 0 / 0
10.02.2014, 12:50:41
    #38555532
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Akina, ты разницу видишь что SUBSTRING_INDEX тут не поможет??
если такой умный приведи пример с SUBSTRING_INDEX.
что бы из '111 222 333' получалось '111 222',
а из '111 222' получалось '111' ????
...
Рейтинг: 0 / 0
10.02.2014, 13:03:15
    #38555564
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Ну нет так нет... я ж не против.
...
Рейтинг: 0 / 0
10.02.2014, 13:12:35
    #38555573
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
sql999966,

"Обрезать строку с конца" это не по-нашему, мы такой обряд не практикуем. Мы говорим: выкинуть из строки последнее слово.
...
Рейтинг: 0 / 0
10.02.2014, 13:18:06
    #38555580
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Akina,

Да, у меня тоже что-то не получается через SUBSTRING_INDEX ...
...
Рейтинг: 0 / 0
10.02.2014, 13:36:42
    #38555611
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
В итоге, кто нибудь знает как рещить задачу??

Я написал рабочий код, но он мне не нравится, сильно сложный
Код: sql
1.
select REVERSE( SUBSTRING(REVERSE('111 222 333', instr(REVERSE('111 222 333'),' ')) )


Можно ли сделать проще?
И не будет ли мой код нагружать mysql ?
этот запрос обрабатывает примерно 30 тыс записей.
...
Рейтинг: 0 / 0
10.02.2014, 13:45:23
    #38555633
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
sql999966не будет ли мой код нагружать mysql ?
этот запрос обрабатывает примерно 30 тыс записей.
Судя по тексту, процедура одноразовая (раз в час - это тоже одноразовая).
Для 30к записей, которые скорее всего помещаются в память, скорость обработки потеряется на скорости дисковых операций чтения-записи.
Так что сойдёт.
...
Рейтинг: 0 / 0
10.02.2014, 13:50:32
    #38555642
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
miksoftу меня тоже что-то не получается через SUBSTRING_INDEX ...
Да, наверное, я был неправ в своей настойчивости. Постоянно забываю, что с минусом - это отсчитать с конца, а не отбросить с начала.

Приношу свои извинения автору темы.

Покрутил. В любом случае получается, что для обрезки именно одного слова надо либо считать байты с конца, либо слова с начала, либо разделители в строке. И все варианты требуют предусмотреть случай, когда разделителя в строке тупо нет, или когда на "хвосте" забылся пробел.
...
Рейтинг: 0 / 0
10.02.2014, 14:19:20
    #38555702
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Кто-нибудь предложит свой вариант?

С моим варииантом
Код: sql
1.
select REVERSE( SUBSTRING(REVERSE('111 222 333', instr(REVERSE('111 222 333'),' ')) )


Поблема, если нет пробела это вернет пустоту!
...
Рейтинг: 0 / 0
10.02.2014, 14:19:29
    #38555703
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
sql999966В итоге, кто нибудь знает как рещить задачу??

Кто-нибудь знает почему автор не смог забить в гугль несколько слов

mysql last index of

https://www.google.com/search?safe=off&complete=0&site=webhp&source=hp&q=mysql last index of&oq=mysql last index of&gs_l=hp.3...709.6523.0.6732.0.0.0.0.0.0.0.0..0.0....0...1c.1.34.hp..0.0.0.TprlSGivZOw
...
Рейтинг: 0 / 0
10.02.2014, 14:21:55
    #38555704
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
Вторая ссылка, тыдыщь:

select
LEFT
(
'Have_a_good_day',
LENGTH('Have_a_good_day') - LENGTH(SUBSTRING_INDEX('Have_a_good_day','_',-1))-1
);

работает как часы, три раза надо повторить значение

http://stackoverflow.com/questions/12775352/last-index-of-a-given-substring-in-mysql

Ну нет в mysql непосредственно функции последнего индекса вхождения. Либо строку переворачивать, либо вычислять по кускам.
...
Рейтинг: 0 / 0
10.02.2014, 15:40:09
    #38555842
sql999966
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
deblogger твой код работает так же как мой.
мой даже короче.

вопрос в том что если код получает слово '111' то возвращает пустоту.
как сделать что бы если он получает одно слово то и возвращает одно слово?
...
Рейтинг: 0 / 0
10.02.2014, 15:57:38
    #38555880
deblogger
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
sql999966,

Это не мой код, я такой фигней не страдаю. Сперва покажите что вы режете, тогда я подумаю как обрезать с остатком. ПОтому что есть теория что у вас там напихано в значение несколько значений с сепаратором как водится у лентяев.
...
Рейтинг: 0 / 0
10.02.2014, 16:14:34
    #38555911
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обрезать строку с конца
sql999966 ,

где-то там в строке нужно добавить concat(... , ' ')
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Обрезать строку с конца / 25 сообщений из 45, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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