mysql批量删除指定字符后的内容
发布网友
发布时间:2022-04-08 19:10
我来回答
共3个回答
热心网友
时间:2022-04-08 20:40
CREATE TABLE test_name( name varchar(30) );
INSERT INTO test_name (name)
SELECT 'aaaa/098234u' UNION ALL
SELECT 'bbbb/456sdfs34u' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'dddd/asfd34u'
;
mysql> UPDATE test_name
-> SET
-> name = LEFT(name, INSTR(name, '/') - 1)
-> WHERE
-> INSTR(name, '/') > 0;
Query OK, 3 rows affected (0.02 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select * from test_name;
+------+
| name |
+------+
| aaaa |
| bbbb |
| cccc |
| dddd |
+------+
4 rows in set (0.00 sec)
追问是这样的,表已经存在了,而且有几百万的数据,这些数据大部分都包含/这个字符,假设表名是tb,列名是name,语句是什么样的呢?不用前面的那些新建表啊啥的,可以直接在原表上修改数据,谢谢!
追答
我上面不是已经 模拟你的 表结构, 和测试数据了么?
CREATE TABLE test_name( name varchar(30) );
INSERT INTO test_name (name)
SELECT 'aaaa/098234u' UNION ALL
SELECT 'bbbb/456sdfs34u' UNION ALL
SELECT 'cccc' UNION ALL
SELECT 'dddd/asfd34u'
;
上面是 模拟表 和数据。
下面是 更新语句, 和验证更新结果
mysql> UPDATE test_name
-> SET
-> name = LEFT(name, INSTR(name, '/') - 1)
-> WHERE
-> INSTR(name, '/') > 0;
Query OK, 3 rows affected (0.02 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> select * from test_name;
+------+
| name |
+------+
| aaaa |
| bbbb |
| cccc |
| dddd |
+------+
4 rows in set (0.00 sec)
你有啥问题?
假设表名是tb,列名是name
那么 SQL 就是
UPDATE tb
SET
name = LEFT(name, INSTR(name, '/') - 1)
WHERE
INSTR(name, '/') > 0;
热心网友
时间:2022-04-08 21:58
update a SET name=SUBSTRING(name,1,
case
when LOCATE('/',name)!=0 then LOCATE('/',name)-1
ELSE LENGTH(`name`)
END
);
a:改成你的表名 name是要处理的字段
热心网友
时间:2022-04-08 23:32
update table set columnname=replace(columnname,'.htmlhdgdf','')
update table set columnname=replace(columnname,'.htmlgfjh,'')