2017-02-02 7 views
1

У меня есть столбец в моей базе данных с записями, которые начинаются или заканчиваются дефисом. Я хотел бы найти эти строки и удалить/заменить дефисы, если это последний или первый (или оба) символ в строке.Заменить символы в строке, если она начинается или заканчивается указанным символом

Что я сейчас:

-sample-value-one- 
sample-value-two- 
-sample-value-three 
sample-value-four 

И это то, что я хотел бы достичь:

sample-value-one 
sample-value-two 
sample-value-three 
sample-value-four 

Так что я должен найти все строки, которые начинаются или оканчиваются с дефисом, и если есть совпадение, удалите дефис, в то время как другие дефисы в строке должны оставаться неизменными.

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

+0

Является ли это то, что вы хотите сделать только один раз, или через равные промежутки времени? Вы отметили mysql, а также php - вы предпочитаете решение MySQL или PHP? –

+0

@AC Только один раз, я хотел бы сделать это в phpmyadmin. Я не пометил php. Моя цель - сделать это с помощью инструкции sql. – rihe

+0

Мой плохой, иногда я прищурился и «sql» выглядит как «php». Всегда ли это просто * дефисс в начале и/или конце? –

ответ

2

Предполагая, что это только один дефис, то:

# Remove first hyphen 
update myTable 
set myCol = substr(myCol,2) 
where myCol like '-%' 
; 

# Remove last hyphen 
update myTable 
set myCol = substr(myCol,1,length(myCol)-1) 
where myCol like '%-' 
; 
2

мог использовать как и случай

update my_table 
set my_column = case when my_column like '-%' then substr(my_column, 2, LENGTH(my_column)-1) 
         when my_column like '%-' then substr(my_column, 1, LENGTH(my_column)-1 ) 
         when my_column like '-%-' then substr(my_column, 2, LENGTH(my_column)-2) 
        end 
where my_column like '-%' 
or my_column like '%-' 
or my_column like '-%-'