查看存储过程中发现有的CONCAT函数中拼接了多个单引号,而不是用’,'分隔,感到有些奇怪
SET @str = concat('SELECT FSerialID, FSendFrom, FSendManageType, FAccountNo,
CASE WHEN A.FAttachment = ''S'' THEN FPhoneNo ELSE FSendAccount END FSendAccount,
A.FTitle,
CASE WHEN A.FAttachment = ''M'' THEN replace(replace(A.FContent, ''\\n'', ''<br>''), ''\\r'', ''<br>'') ELSE A.FContent END FContent, ...);
其中CONCAT的用法和平常使用的方法略有不同:
CONCAT(str1,str2,...) # 常见用法
且整个CONCAT语句中只有一个字符串,字符串里连续使用两个单引号,研究发现,在这种用法下,在整个字符串中2个单引号表示字符串中的一个单引号,如下
SELECT CONCAT('abc''d''s');
结果为