如果字符串以指定的char开头或结尾,则替换字符串中的字符

时间:2017-02-02 19:23:13

标签: mysql sql phpmyadmin

我的数据库中有一个列,其中的条目以连字符开头或结尾。我想找到这些行并删除/替换连字符,如果它是字符串中的最后一个或第一个(或两个)字符。

我现在拥有的:

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

这就是我想要实现的目标:

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

所以我必须找到以连字符开头或结尾的所有行,如果匹配,则删除连字符,而字符串中的其他连字符应保持不变。

我没有替换一个字符串的问题,但这个任务似乎对我来说很难,所以如果有人能帮助我,我真的很感激。

2 个答案:

答案 0 :(得分:2)

可以使用like和case

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 '-%-' 

答案 1 :(得分: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 '%-'
;