mysql使用存储过程备份,截取动态字符串。

//创建存储过程

CREATE PROCEDURE `backup_table`( IN tableName CHAR ( 100 ) )
BEGIN
SET @backupTable = CONCAT( tableName, '_bak_',DATE_FORMAT(NOW(), '%Y%m%d%k%i%s') );
SET @stmt = CONCAT( "create table ", @backupTable, " like ", tableName, ";" );
PREPARE stmt
FROM
@stmt;
EXECUTE stmt;
SET @stmt = CONCAT( "INSERT into ", @backupTable, " SELECT * from ", tableName, ";" );

PREPARE stmt
FROM
@stmt;
EXECUTE stmt;
END

//调用存储过程

call backup_table('表名');

//删除存储过程

drop  PROCEDURE backup_table;

 

 

 

CHAR_LENGTH(str)

返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。对于一个包含五个二字节字符集, LENGTH()返回值为 10, 而CHAR_LENGTH()的返回值为5。

◆ CHARACTER_LENGTH(str)

CHARACTER_LENGTH()是CHAR_LENGTH()的同义词。

◆ COMPRESS(string_to_compress)

压缩一个字符串。这个函数要求 MySQL已经用一个诸如zlib的压缩库压缩过。 否则,返回值始终是NULL。UNCOMPRESS() 可将压缩过的字符串进行解压缩。

配合left()函数,可以进行动态字符串的截取。

select left('A,B,C,',CHAR_LENGTH('A,B,C,')-1) as '截取'

 

 

 存储过程mysql判断字符串最后一位是否等于逗号,如果是就截取

select case when right(”字符串”,1) = ',' 

then 

left(”字符串”,CHAR_LENGTH(”字符串”)-1)

else

business_todo_id_temp

end 

into BUSINESS_TODO_ID_temp;

 

posted @ 2022-09-02 18:28  教练我想打篮球  阅读(193)  评论(1编辑  收藏  举报