sql查询语句,where条件中包含单引号的解决方案

sql查询语句,where条件中包含单引号的解决方案,第1张

关于jsp页面中使用sql语句,where条件中变量包含特殊字符单引号的解决方案:

sql语句中需要将where条件中的单引号变为两个单引号即可,如下:

select * from zxmxxk_kpsq_tzym_view where 1=1 and zxmmc='CrystalDynamics_Avenger''sProject_Art_Env_Batch2'

jsp页面中,需要将包含单引号的变量进行替换:

String zxmmc = Util.null2String(request.getParameter("zxmmc"))//文本

String sqlWhere = " where 1=1 "

if(zxmmc.indexOf("'")!=-1){

zxmmc= zxmmc.replace("'","''")

}

if(!"".equals(zxmmc)){

sqlWhere += " and zxmmc='"+zxmmc+"'"

}

SQL语句中的单引号与双引号区别和应用

1 连接字符&号:ASP中&号的主要作用是用来连接的,包括:字符串-字符串、字符串-变量、变量-变量等混合连接。

2 单引号':正如学习语文课一样,继续放在双引号中的引号可以采用单引号。

3 双引号"" :ASP中处在双引号中的可以是任意的字符、字符串,HTML代码。

例子:

v代表变量

V对于数字 例子:var1.asp

qSQL=“select * from 股票行情表 where 收盘价>”&V

V对于字符串 例子:var2.asp

qSQL=“select * from 股票行情表 where 股票代号=‘”&V&”’”

V对于日期时间 例子:var3.asp

qSQL=“select * from 买卖记录 where 买卖日期=#”&V&”#”

单引号与双引号的区别:

双引号里面的字段会经过编译器解释,然后再当作HTML代码输出;单引号里面的不需要解释,直接输出。也就是说双引号中的变量会被解析,单引号里的变量不会被解析。

  查询语句中的字段如果是文本型就要用单引号,数字型(整型)的才不要单引号,简言之,一个SQL查询语句用双引号括起来,里面的SQL语句中的字符变量用单引号括起来。而Dreamweaver UltraDev 4软件中自动生成的语句默认都是数字型的,所以会出现错误号0x80040E10的提示。

首先要知道,引号是成对出现的.这个就和语文中学到的一样.引号里面的是一段字符串,我们把这段看成一个整体.引号外面的是变量,这个也看成一个整体,而变量也必须是在引号外面的,&是连接符,是用来连接两个整体的

有时候单引号括起来是字符,Sql中 单引号也做转义字符

双引号是字符串,char和string

……………………………………………………………………

在SQL语句 双引号,单引号连用怎么理解,???

StrSql="select * from usersheet where loginname=' "+Login1.UserName+" ' and userpass=' "+Login1.PassWord+" ' "

就谈下边的这个例子把

问题补充:' "+Login1.UserName+" '

这个里边的单双引号怎么解释 还有+号 !!

提问者: netswords - 助理 二级

最佳答案

loginname 指的就是一个变量名<与数据库里的字段匹配>,

而' "+Login1.UserName+" ' 就是你输入的值,

假如只有单引号,系统会认为变量就是Login1.UserName,

而这个值是固定的,然而我们需要的是一个变量,所以就得再加一个双引号,

至于 ‘+’ 就是连接字符串的意思、、

***************8上面的是网上的解释 ************

**************8下面是我的程序**********************

strSQL1 = "select * from design where "+rbtnField.SelectedValue+" like '%李大线%' "

strSQL2 = "select * from design where result like '%李大线%' "

strSQL1 显示的 结果 select * from design where result like '%李大线%'

strSQL1 显示的 结果 select * from design where result like '%李大线%'

上面这两句话这个时候完全相同 ,可以实现查询。

如果是下面的情况就不一样了~~~

strSQL1 = "select * from design where ' "+rbtnField.SelectedValue+" ' like '%李大线%' "

strSQL2 = "select * from design where result like '%李大线%' "

strSQL1 显示的 结果 select * from design where 'result' like '%李大线%'

strSQL1 显示的 结果 select * from design where result like '%李大线%'

SqlCommand mycomm = new SqlCommand("select * from design where "+rbtnField.SelectedValue+" like '%李大线%' ", conn) 这个时候可以完成模糊搜索。。

strSQL1 = " select * from design where "+rbtnField.SelectedValue+ " = ' "+Textkeyword.Text+ " ' "

strSQL 2= "select * from design where "+rbtnField.SelectedValue+ " = "+Textkeyword.Text+ " "

select * from design where kv = '35'

strSQL1 显示的 结果 select * from design where kv = '35'

strSQL1 显示的 结果select * from design where kv = 35

这个时候的strSQL1和strSQL2是等价的,都可以用于查询。。

看样子,至少我的例子中,单引号' '是没有任何作用的,只有麻烦,以后尽量不用

这个不是三引号,而是一个单引号,一个双引号,双引号是你这句代码中拼接字符串用的,因为你的userinfo.loginname

是个变量,如果是个写死的字符串可以直接where

loginname='admin'


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6668513.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存