|
|
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Надо в mysql как бы обрезать строку с конца по пробелу. Если текст: "privet ira kis" Надо получить "privet ira" Если текст: "privet ivan" Надо получить привет "privet" Как это сделать? сам запрос примерно такой Код: sql 1. То есть надо отбросить считая с конца строку до первого пробела Помогите пожалуйста как это сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 11:53:44 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
REVERSE(SUBSTRING_INDEX(REVERSE())) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 11:59:06 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Не понял. Нужно вот так: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:02:40 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
sql999966Не понял. Ну так читай, пока не придёт понимание... http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_reverse http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_substring-index ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:05:29 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
уже читал. по этому и обратился за помощью. попробовал как ты посоветовал не получается. заранее спасибо если кто то поможет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:09:15 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:12:45 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Надо если строка "111 222 333" получилось "111 222" если строка "555 666" получилось "555" твой метод не работает. с твоим методом получается "111" вместо ""111 222" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:13:20 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
miksoft, твой код возвращает kis а надо privet ira ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:15:15 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
У кого опыт большой, подскажите пожалуйста как реализовать задачу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:21:27 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Получилось сделать, вот так работает: select REVERSE( SUBSTRING(REVERSE('111 222 333', instr(REVERSE('111 222 333'),' ')) ) Но это очень огромный код получился, и думаю будет нагружать mysql Можно ли сделать проще и красивее???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:37:31 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Ты разницу между SUBSTRING_INDEX и SUBSTRING видишь, не? они даже по длине раличаются, не говоря уж о выполняемой функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:46:25 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
sql999966miksoft, твой код возвращает kis а надо privet iraДа, сорри, был невнимателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:47:59 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Akina, ты разницу видишь что SUBSTRING_INDEX тут не поможет?? если такой умный приведи пример с SUBSTRING_INDEX. что бы из '111 222 333' получалось '111 222', а из '111 222' получалось '111' ???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:50:41 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Ну нет так нет... я ж не против. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 13:03:15 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
sql999966, "Обрезать строку с конца" это не по-нашему, мы такой обряд не практикуем. Мы говорим: выкинуть из строки последнее слово. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 13:12:35 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Akina, Да, у меня тоже что-то не получается через SUBSTRING_INDEX ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 13:18:06 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
В итоге, кто нибудь знает как рещить задачу?? Я написал рабочий код, но он мне не нравится, сильно сложный Код: sql 1. Можно ли сделать проще? И не будет ли мой код нагружать mysql ? этот запрос обрабатывает примерно 30 тыс записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 13:36:42 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
sql999966не будет ли мой код нагружать mysql ? этот запрос обрабатывает примерно 30 тыс записей. Судя по тексту, процедура одноразовая (раз в час - это тоже одноразовая). Для 30к записей, которые скорее всего помещаются в память, скорость обработки потеряется на скорости дисковых операций чтения-записи. Так что сойдёт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 13:45:23 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
miksoftу меня тоже что-то не получается через SUBSTRING_INDEX ... Да, наверное, я был неправ в своей настойчивости. Постоянно забываю, что с минусом - это отсчитать с конца, а не отбросить с начала. Приношу свои извинения автору темы. Покрутил. В любом случае получается, что для обрезки именно одного слова надо либо считать байты с конца, либо слова с начала, либо разделители в строке. И все варианты требуют предусмотреть случай, когда разделителя в строке тупо нет, или когда на "хвосте" забылся пробел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 13:50:32 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь предложит свой вариант? С моим варииантом Код: sql 1. Поблема, если нет пробела это вернет пустоту! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 14:19:20 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 14:19:29 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Вторая ссылка, тыдыщь: 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 непосредственно функции последнего индекса вхождения. Либо строку переворачивать, либо вычислять по кускам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 14:21:55 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
deblogger твой код работает так же как мой. мой даже короче. вопрос в том что если код получает слово '111' то возвращает пустоту. как сделать что бы если он получает одно слово то и возвращает одно слово? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 15:40:09 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
sql999966, Это не мой код, я такой фигней не страдаю. Сперва покажите что вы режете, тогда я подумаю как обрезать с остатком. ПОтому что есть теория что у вас там напихано в значение несколько значений с сепаратором как водится у лентяев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 15:57:38 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
sql999966 , где-то там в строке нужно добавить concat(... , ' ') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 16:14:34 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Cygapb-007где-то там в строке нужно добавить concat(... , ' ')Наоборот, в начале. А на выхлопе его тримануть обратно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 16:35:29 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
как? попробовал если добавлять пробеелы и на финише трим. перестаает работать. из 111 222 возвращает 111 222 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 16:57:33 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
AkinaCygapb-007где-то там в строке нужно добавить concat(... , ' ')Наоборот, в начале. А на выхлопе его тримануть обратно.улыбнуло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 17:41:28 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
sql999966как? попробовал если добавлять пробеелы и на финише трим. перестаает работать. из 111 222 возвращает 111 222наверное, как-то так... Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 17:43:22 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
сорь, соврамши... не работает, надо было проверить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 17:56:33 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ab111 222 111222333 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 18:06:25 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 18:15:57 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
miksoft, Чтобы получилось через substring_index() c -1 (с конца), то можно наверное им выделить этот самый конец а потом через replace() заменить на пустую строку. Это ежели точно знаем что оно не повторяется в строке. А ежели не знаем или повторяется, то можно просто тримнуть то, что нашлось, типа так: TRIM(TRAILING SUBSTRING_INDEX(#string#, #pattern#, -1) FROM #string#) нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 22:35:14 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Arhat109, да, вроде бы так должно получится. только TRIM придется два раза применять, чтобы еще лишний пробел убрать. http://sqlfiddle.com/#!2/d41d8/31441 и с односложными строками надо что-то придумать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 22:57:18 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
miksoft, а locate() с конца искать - не умеет (pos<0)? Давно не пользовал, забылось как-то. Если умеет, то предварительно тупо ищем пробел с конца и смотри есть он ваще или первый или куда... то есть заворачиваем это в if() Если НЕ умеет ... то сравнивать всю длину строки с тем, что находит substring_index()... опять же заворачиваем в if(). А впрочем, какая разница? Ищем первый пробел через locate() и если оно есть (более одного слова), то применяем правило... с конца. НО, по условиям задачи заниматься этой дурью вроде как не надо... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 23:23:08 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 23:36:23 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
почему то в моей mysql это select TRIM(TRAILING 'xyz' FROM 'barxxyz'); ничего не выводит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 07:44:13 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Arhat109 ,разобрался TRIM(TRAILING SUBSTRING_INDEX(#string#, #pattern#, -1) FROM #string#) работает. но как сделать что бы это не удаляло одго слово? если '111' возвращает пустоту ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 08:00:23 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
sql999966, Двумя постами выше - читайте. Как раз про это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 08:48:34 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. это какойто непонятный код, не разу такой не встречал. что это значит? и нельзя ли сделать проше? к тому же изначально я не знаю какие слова надо будет удалять. а тут переменным сразу значения вроде присваиваются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 09:19:10 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
раз пошла такая пьянка... Код: sql 1. 2. 3. 4. красиво)) спс) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 09:29:02 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
sql999966 Код: sql 1. 2. 3. 4. это какойто непонятный код, не разу такой не встречал. что это значит? и нельзя ли сделать проше? к тому же изначально я не знаю какие слова надо будет удалять. а тут переменным сразу значения вроде присваиваютсяЭто пример, чтобы скопипастить-запустить-увидеть сразу результат. Без таблиц ваабше. Код: sql 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2014, 12:44:25 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
select REVERSE( SUBSTRING( LTRIM(REVERSE(if( Position(' ' IN @a)=0 , Concat(@a,' '), @a))), INSTR(LTRIM(REVERSE(if( Position(' ' IN @a)=0 , Concat(@a,' '), @a))),' ') ) ) ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2015, 19:47:42 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
Вот итоговый рабочий код Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2015, 16:18:32 |
|
||
|
Обрезать строку с конца
|
|||
|---|---|---|---|
|
#18+
юниверсил функшен тогда уж Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 12:26:59 |
|
||
|
|

start [/forum/topic.php?all=1&fid=47&tid=1832622]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 369ms |

| 0 / 0 |
