我需要从表格上的每条记录中删除第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的特定位置。
由于
答案 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));
答案 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)
您可以将RIGHT
和LEFT
功能与REPLACE
和CONCAT
功能结合使用:
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
字符串。