mysql删除第n个位置的char

时间:2015-07-30 07:10:23

标签: mysql

我需要从表格上的每条记录中删除第3个连字符( - )或最后一个连字符。 这是样本数据

  

2009-12245-5432112310000-4

     

2009-12245-5431212320000 -

     

2009-12245-H196812310000-

     

2009-12245-C026512310000-0

UPDATE后输出应该是这样的

  

2009-12245-54321123100004

     

2009-12245-5431212320000

     

2009-12245-H196812310000

     

2009-12245-C0265123100000

我是否可以将任何mysql函数与UPDATE命令一起使用?我知道replace()命令,但我认为它没有参数替换char的特定位置。

由于

4 个答案:

答案 0 :(得分:1)

使用2 SUBSTRING_INDEX来实现这一目标 首先SUBSTRING_INDEX获取前一个-和之前的字符串 在SUBSTRING_INDEX之后获取字符串的第二个-

Read more about SUBSTRING_INDEX here

<强>查询

update tblName
set str=concat(substring_index(str,'-',3),substring_index(str,'-',-1));

Fiddle demo

答案 1 :(得分:1)

您必须使用CONCAT()SUBSTRING_INDEX()的组合。请尝试以下查询:

UPDATE tblName
SET column = CONCAT(SUBSTRING_INDEX(column,'-',3),SUBSTRING_INDEX(column,'-',-1));

它将连接第一个子串和最后一个子串。以下是输出:

+---------------------------+
| 2009-12245-54321123100004 |
| 2009-12245-5431212320000  |
| 2009-12245-H196812310000  |
| 2009-12245-C0265123100000 |
+---------------------------+

答案 2 :(得分:0)

试试这个:

UPDATE `table` SET `column` = CONCAT(SUBSTRING_INDEX(`column`, '-', 3), SUBSTRING_INDEX(`column`, '-', -1));

答案 3 :(得分:0)

您可以将RIGHTLEFT功能与REPLACECONCAT功能结合使用:

UPDATE TABLE SET column = CONCAT(LEFT(column, CHAR_LENGTH(column)-4), 
                                 REPLACE(RIGHT(col, 4), '-', ''));

RIGHT功能

  

从字符串str返回最右边的len个字符,如果是,则返回NULL   任何参数都是NULL。

LEFT功能

  

从字符串str返回最左边的len个字符,如果有的话,返回NULL   参数为NULL。

所以你取字符串并通过RIGHT函数获取最后4位数字并将这些子字符串放入replace函数中。使用REPLACE功能,您可以删除-。之后,使用新字符串连接LEFT字符串。