以文本方式查看主题

-  搭建论坛  (http://bbs.diylsoft.com:8118/starforum/index.asp)
--  数据库交流  (http://bbs.diylsoft.com:8118/starforum/list.asp?boardid=6)
----  ADO查询中的引号问题  (http://bbs.diylsoft.com:8118/starforum/dispbbs.asp?boardid=6&id=7533)

--  作者:reachtone
--  发布时间:2007-3-19 19:11:42
--  ADO查询中的引号问题

我现在正做的一个数据管理系统,前段时间测试都完全正常,今天偶然出现了错误。经仔细检查发现,是ADO查询语句中单引号和双引号的问题。该SQL语句类似于如下格式:

错误的语句:{select * from 销售日报 where 备注信息 like \'% \' %\'}

{select * from 销售日报 where 备注信息 like "% " %"}

问题就在<备注信息>中的条件值部分。如果输入的条件值中含有单引号\',错误出现;如果把这个语句中的单引号改成双引号,则没问题。下面就是正确的语句,可以正常执行:

{select * from 销售日报 where 备注信息 like \'% " %\'}

{select * from 销售日报 where 备注信息 like "% \' %"}

由于我设计的系统中,允许用户输入<备注信息>中的任意关键字进行检索查询,就是说,用户很有可能就输入一个单引号或者双引号,请问我这个SQL查询语句该怎样写?


--  作者:reachtone
--  发布时间:2007-3-20 9:13:52
--  

选择查询构件中也存在这样的问题:


此主题相关图片如下:
按此在新窗口浏览图片

建议管理员完善一下,要么解决此问题,要么限制单引号或双引号作为查询条件。


--  作者:admin
--  发布时间:2007-3-20 10:28:08
--  

实际上,你在第一楼已经讲解的很明白了,这是SQL语法的问题。在SQL语言中“单引号(\')”和“双引号(")”,在条件语句(where)中查询字符串变量的时,需要用单引号或双引号,括起来。

如::{select * from 销售日报 where 备注信息 like \'% \' %\'}

你的本意是,查询备注信息中,包含“\'”的信息;但是,第二个单引号,与第一个单引号,已经形成了SQL语句,而第三个单引号,成了孤号,你的SQL语法当然出错了。每一个语言都有语法和关键字之分,不能不照顾 语法和关键字,而随意应用。这个问题与搭建之星无关。