SQL存储过程单引号拼接问题:分区自动化脚本字符串拼接异常
解决MySQL分区脚本中日期值单引号拼接问题
在MySQL的字符串常量中,要输出一个单引号,必须用两个连续的单引号('')进行转义。你原来的拼接语句因为转义逻辑错误,导致无法给日期值正确添加包裹的单引号。
修正方案一:多层单引号转义
直接调整转义逻辑,在@partition_ts前后各添加四个单引号('''')——外层字符串的单引号需要转义,四个单引号最终会解析为一个实际输出的单引号:
SET @q = 'SELECT CONCAT(@query, '' PARTITION '', @partition_name, '' VALUES LESS THAN (TO_DAYS('''''', @partition_ts, ''''''))'') INTO @query';
修正方案二:使用CHAR(39)替代单引号转义
如果觉得多层转义容易混乱,可以用CHAR(39)来表示单引号(单引号的ASCII码为39),这种写法更直观:
SET @q = 'SELECT CONCAT(@query, '' PARTITION '', @partition_name, '' VALUES LESS THAN (TO_DAYS('', CHAR(39), @partition_ts, CHAR(39), ''))'') INTO @query';
两种方案都能生成你需要的格式:
PARTITION pweek38 VALUES LESS THAN (TO_DAYS('2024-09-22 00:00:00.000000'))
内容的提问来源于stack exchange,提问作者code-geek
相关产品推荐
相关产品推荐

