2015-05-23 3 views
1

Надеюсь, кто-то может мне помочь. У меня есть столбец с 160 000 строк. Многие из этих значений столбцов (permalinks) заканчиваются на «-2», что не так важно, поэтому я хочу их удалить. Но я не могу заставить его работать.SQL Замените последние 2 символа, если последние 2 символа совпадений

Я попробовал его с помощью следующего запроса:

UPDATE wp_pods_cars 
SET permalink = Replace(permalink,'-2','') 
WHERE RIGHT('permalink' , 2) = '-2'; 

Этот запрос кажется действительным, но RIGHT(), кажется, делает неприятности. Вероятно, его можно просто использовать для SELECT, а не в WHERE-clause.

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

+1

Вы должны удалить кавычки в 'RIGHT' вызов, потому что 'постоянная ссылка' является символьной строкой, а не ваша ссылки на столбец. –

ответ

1

У вас есть одинарные кавычки вокруг имени столбца, поэтому вы сравниваете постоянную строку в предложении where. Версия, которая приходит ближе к обработке является:

UPDATE wp_pods_cars 
    SET permalink = Replace(permalink,'-2','') 
    WHERE RIGHT(permalink, 2) = '-2'; 

Однако, я хотел бы написать это как:

UPDATE wp_pods_cars 
    SET permalink = LEFT(permalink, length(permalink) - 2) 
    WHERE permalink LIKE '%-2'; 

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

0

Прежде всего удалить кавычки из столбца имени в соответствии с комментарием Олега .Это может быть другое решение с критериями, то SUBSTRING функция MySQL извлекает часть строки, CHAR_LENGTH функция вычисляет количество символов в строке & окончательно назначить до permalink.

UPDATE wp_pods_cars 
    SET permalink = SUBSTRING(permalink, 1, CHAR_LENGTH(permalink) - 2) 
WHERE permalink LIKE '%-2'; 

Больше О:

SUBSTRING

CHAR_LENGTH

Смежные вопросы