有个mysql存储过程,当字符串参数传进去带单引号,就会报错,请问怎么解决? 100
DROPPROCEDUREIFEXISTS`proc_save`;;CREATEPROCEDURE`proc_save`(pplayeridINT,pplayername...
DROP PROCEDURE IF EXISTS `proc_save`;;
CREATE PROCEDURE `proc_save`(
pplayerid INT,
pplayername VARCHAR(256)
)
BEGIN
start transaction;
update t_tab set playername = pplayername where playerid = pplayerid;
commit;
END;;
pplayername为Tom没问题,如果为T'om就会报错,可以为T''om就没问题,但是我要怎么在存储过程中给这个字符串做处理 展开
CREATE PROCEDURE `proc_save`(
pplayerid INT,
pplayername VARCHAR(256)
)
BEGIN
start transaction;
update t_tab set playername = pplayername where playerid = pplayerid;
commit;
END;;
pplayername为Tom没问题,如果为T'om就会报错,可以为T''om就没问题,但是我要怎么在存储过程中给这个字符串做处理 展开
1个回答
2016-12-24
展开全部
MySQL识别下列转义字符:
\0
一个ASCII 0 (NUL)字符。
\n
一个新行符。
\t
一个定位符。
\r
一个回车符。
\b
一个退格符。
\'
一个单引号(“'”)符。
\"
一个双引号(“"”)符。
\\
一个反斜线(“\”)符。
\%
一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
\_
一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。
有几种方法在一个字符串内包括引号:
一个字符串内用“'”加引号的“'”可以被写作为“''”。
一个字符串内用“"”加引号的“"”可以被写作为“""”。
你可以把一个转义字符(“\”)放在引号前面。
一个字符串内用“"”加引号的“'”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“'”加引号的与“"”也不需要特殊对待。
下面显示的SELECT演示引号和转义如何工作:
mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+
mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
+-------+---------+-----------+--------+--------+
| hello | 'hello' | ''hello'' | hel"lo | "hello |
+-------+---------+-----------+--------+--------+
mysql> SELECT "This\nIs\nFour\nlines";
+--------------------+
| This
Is
Four
lines |
+--------------------+
如果你想要把二进制数据插入到一个BLOB列,下列字符必须由转义序列表示:
NUL
ASCII 0。你应该用'\0'(一个反斜线和一个ASCII '0')表示它。
\
ASCII 92,反斜线。用'\\'表示。
'
ASCII 39,单引号。用“\'”表示。
"
ASCII 34,双引号。用“\"”表示。
\0
一个ASCII 0 (NUL)字符。
\n
一个新行符。
\t
一个定位符。
\r
一个回车符。
\b
一个退格符。
\'
一个单引号(“'”)符。
\"
一个双引号(“"”)符。
\\
一个反斜线(“\”)符。
\%
一个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
\_
一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
注意,如果你在某些正文环境中使用“\%”或“\%_”,这些将返回字符串“\%”和“\_”而不是“%”和“_”。
有几种方法在一个字符串内包括引号:
一个字符串内用“'”加引号的“'”可以被写作为“''”。
一个字符串内用“"”加引号的“"”可以被写作为“""”。
你可以把一个转义字符(“\”)放在引号前面。
一个字符串内用“"”加引号的“'”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“'”加引号的与“"”也不需要特殊对待。
下面显示的SELECT演示引号和转义如何工作:
mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+
mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
+-------+---------+-----------+--------+--------+
| hello | 'hello' | ''hello'' | hel"lo | "hello |
+-------+---------+-----------+--------+--------+
mysql> SELECT "This\nIs\nFour\nlines";
+--------------------+
| This
Is
Four
lines |
+--------------------+
如果你想要把二进制数据插入到一个BLOB列,下列字符必须由转义序列表示:
NUL
ASCII 0。你应该用'\0'(一个反斜线和一个ASCII '0')表示它。
\
ASCII 92,反斜线。用'\\'表示。
'
ASCII 39,单引号。用“\'”表示。
"
ASCII 34,双引号。用“\"”表示。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |