我有以下SP:
CREATE PROCEDURE sp_test
(
text_data varchar(50)
)
BEGIN
SET @var_query = CONCAT('SELECT * FROM sample_table WHERE col="',text_data,'"');
PREPARE stmt FROM @var_query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;
我这样称呼这个SP CALL sp_test('Screen size 4.3\"')
。我得到一个错误。然后,如果我检查 @var_query 变量的值,这就是它的外观。
+-------------------------------------------------------+
| @var_query |
+-------------------------------------------------------+
| SELECT FROM sample_table WHERE col="screen size 4.3"" |
+-------------------------------------------------------+
正如您所看到的,转义的 " 正在被转义。如果我直接用转义的双引号点击这个 select 语句,它运行正常。所以这意味着 concat 正在删除未转义的转义字符。如何解决这个问题?