2013-07-02 2 views
7

я имею таблицу MySQL с такого рода даннымизапрос, чтобы удалить все символы после последней запятой в строке

TACOMA, Washington, 98477 

Теперь у меня есть тысячи таких строк. Я хочу, чтобы данные можно манипулировать таким образом, что она выглядит как:

TACOMA, Washington 

Можно ли хотя MySQL или мне придется вручную делать это.

ответ

17

Вы можете использовать:

SELECT SUBSTRING_INDEX('TACOMA, Washington, 98477', ',', 2) 

Вы можете прочитать больше here.

И оператор обновления:

UPDATE my_table 
    SET my_col = SUBSTRING_INDEX(my_col, ',', 2) 

Где вам нужно заменить my_table с именем таблицы и my_col с колонной вы должны быть обновлены.

+0

и как мне сделать обновление в том же столбце с новыми результатами в этом запросе? – beNerd

+0

@beNerd Я разместил его – Stephan

+0

Что такое 2 для? –

5
substring_index(col, ',',-1) 

даст строку из последнего индекса запятой до конца строки

replace(col,concat(',',substring_index(col, ',',-1)),'') 
+0

Ты запрос возвращает '98477'. –

+0

yes и удалить это снова – chetan

6

Возможно, таким образом. Подсчитайте количество запятых (путем проверки длины от длины со всеми запятыми удалены), а затем использовать SUBSTRING_INDEX, чтобы получить строку до количества запятых: -

SELECT SUBSTRING_INDEX(col, ',', LENGTH(col) - LENGTH(REPLACE(col, ',', ''))) 
FROM SomeTable 
+0

+1 для динамический подсчет запятой – Stephan