当前位置:  开发笔记 > 数据库 > 正文

我如何处理SQL中的引号

如何解决《我如何处理SQL中的引号》经验,为你挑选了1个好方法。

我有一个名字在其中的数据库,如John Doe等.不幸的是,其中一些名字包含像Keiran O'Keefe这样的引号.现在,当我尝试搜索如下名称时:

SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe' 

我(可以理解)得到一个错误.

如何防止发生此错误.我正在使用Oracle和PLSQL.



1> Matt Sheppar..:

转义字符是',因此您需要用两个引号替换引号.

例如,

SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe'

SELECT * FROM PEOPLE WHERE SURNAME='O''Keefe'

也就是说,自己这样做可能是不正确的.您的语言可能具有转义字符串以在SQL中使用的函数,但更好的选择是使用参数.通常这样做如下.

你的SQL命令是:

SELECT * FROM PEOPLE WHERE SURNAME=?

然后,当你执行它时,你传入"O'Keefe"作为参数.

因为在设置参数值之前解析了SQL,所以参数值无法改变SQL的结构(如果你想用不同的参数多次运行相同的语句,它甚至会更快一些).

我还应该指出,虽然你的例子只会导致错误,但你可以通过不适当地转义字符串来解决许多其他问题.请参阅http://en.wikipedia.org/wiki/SQL_injection以获得一个好的起点或以下经典的xkcd漫画.

替代文字

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有