开发手册:https://dev.mysql.com/doc/refman/8.0/en/information-functions.html
1. 替换某个字段中的部分内容
SET @oldlink1 = 'http://192.168.100.66'; SET @newlink1 = 'www.baidu.com'; UPDATE Test1 SET Content = ( REPLACE ( Content ,@oldlink1 ,@newlink1 ) ) WHERE Content LIKE concat('%' ,@oldlink1, '%');
2.连表删除数据
SET @UnitId = '27542'; DELETE t1 FROM Test1 AS t1 INNER JOIN Test2 AS t2 ON t1.Code = t2.Code WHERE t2.UnitId NOT IN (@UnitId);
3.连表插入数据
INSERT INTO Test ( ID, PostTime ) SELECT UUID() AS ID, t1.PostTime FROM Test1 AS t1 INNER JOIN Test2 AS t2 ON t1.Code = t2.Code;
4. 连表更新数据
UPDATE Test1 AS t1 INNER JOIN Test2 AS t2 ON t1.Code = t2.Code SET t1.NextFlowNodeId = 72 WHERE t1.ProcessStepId = 70;
5.获取某个库下的所有表名
select table_name from information_schema.tables where table_schema=@dbName
6.获取某个表的所有字段名
select COLUMN_NAME from information_schema.COLUMNS where table_name = @tableName and table_schema = @dbName;
7.CONCAT 拼接字符串
SET @SearchText= CONCAT('%','测试','%'); SELECT * FROM Test3 WHERE CONCAT(ItemName,ItemNumber,DeptName,RealName) LIKE @SearchText;
注意:若拼接项中存在NULL值,结果为NULL。如 CONCAT('测试','001',NULL,'小明'),结果为NULL,并不是我们想要的结果:"测试001小明"
8.删除本表重复数据(You can’t specify target table for update in FROM clause,嵌套一层处理)
DELETE FROM A WHERE id IN ( SELECT tt.* FROM ( SELECT t1.id FROM A AS t1 WHERE objectid = 'S' AND Enabled = 0 AND EXISTS ( SELECT * FROM A AS t2 WHERE objectid = 'S' AND t1.UserId = t2.UserId GROUP BY UserId HAVING COUNT(id) >= 2 ) ) AS tt );