被查询的字段中含有双引号的SQL语句怎么写???

时间:2021-10-08 16:13:54
ASP+Access环境:
myname="......."  '从某个方式得到值, 值中包含有最原始的双引号(但是不知道双引号在myname中的位置)
然后用这个值去匹配数据库里的字段 

sql(1) 
sql="select * from [biao] where ziduan='"&myname&"'" 
sql(2) 
sql="select * from [biao] where ziduan="""&myname&"""" 

注意: 数据库里的字段ziduan里,也包含最原始的双引号("),现在要进行匹配, 出错. 

怎么改写这个SQL语句?

11 个解决方案

#1


只有拆分字符串了

#2


引用 1 楼 WWWWA 的回复:
只有拆分字符串了


怎么拆分?

#3


简单地说,就是将myname中的双引号修改为两个双引号,用REPLACE试试,
相当于转义

#4


转义符号。sql 转义符号 百度搜索下

#5


引用 3 楼 WWWWA 的回复:
简单地说,就是将myname中的双引号修改为两个双引号,用REPLACE试试, 
相当于转义


Access不支持replace

#6


引用 4 楼 zetee 的回复:
转义符号。sql 转义符号 百度搜索下


在字段内容里有 双引号 怎么转义?

#7


Access不支持replace
NO,在VBA环境下可以,在ADO连接MDB下不能使用

#8


access 不支持replace,可以VBscript支持啊。

sql="select * from [biao] where ziduan='" & replace(myname,"'","''") & "'" 


sql="select * from [biao] where ziduan='" & replace(myname,"""","""""") & "'" 

#9


select * from [user] where name='"cds"' 直接ok了

#10


关于此主题请参考:
    简单方案:Ado本身也能防SQL漏洞。
    http://www.access911.net/index.asp?u1=a&u2=72FABF1E12DCEFF3



用COMMAND对象,ADO 会自己帮你转换引号的

#11


正规应该ADO或者ADO.net的参数形式进行操作数据库,才安全。

也可以用替换法,加入转义符号。
        public static string SQL_ESC(string InPut)
        {
            StringBuilder OutPut = new StringBuilder();
            OutPut.Append(InPut);
            OutPut.Replace("[", "[[]");
            OutPut.Replace("%", "[%]");
            OutPut.Replace("_", "[_]");
            OutPut.Replace("'", "''");

            return OutPut.ToString().Trim();
        }

#1


只有拆分字符串了

#2


引用 1 楼 WWWWA 的回复:
只有拆分字符串了


怎么拆分?

#3


简单地说,就是将myname中的双引号修改为两个双引号,用REPLACE试试,
相当于转义

#4


转义符号。sql 转义符号 百度搜索下

#5


引用 3 楼 WWWWA 的回复:
简单地说,就是将myname中的双引号修改为两个双引号,用REPLACE试试, 
相当于转义


Access不支持replace

#6


引用 4 楼 zetee 的回复:
转义符号。sql 转义符号 百度搜索下


在字段内容里有 双引号 怎么转义?

#7


Access不支持replace
NO,在VBA环境下可以,在ADO连接MDB下不能使用

#8


access 不支持replace,可以VBscript支持啊。

sql="select * from [biao] where ziduan='" & replace(myname,"'","''") & "'" 


sql="select * from [biao] where ziduan='" & replace(myname,"""","""""") & "'" 

#9


select * from [user] where name='"cds"' 直接ok了

#10


关于此主题请参考:
    简单方案:Ado本身也能防SQL漏洞。
    http://www.access911.net/index.asp?u1=a&u2=72FABF1E12DCEFF3



用COMMAND对象,ADO 会自己帮你转换引号的

#11


正规应该ADO或者ADO.net的参数形式进行操作数据库,才安全。

也可以用替换法,加入转义符号。
        public static string SQL_ESC(string InPut)
        {
            StringBuilder OutPut = new StringBuilder();
            OutPut.Append(InPut);
            OutPut.Replace("[", "[[]");
            OutPut.Replace("%", "[%]");
            OutPut.Replace("_", "[_]");
            OutPut.Replace("'", "''");

            return OutPut.ToString().Trim();
        }