sql语句中单引号,双引号的处理方法

下面我们就分别讲述,虽然说的是Insert语句, 但是Select、Update、Delete语句都是一样的。
假如有下述表格:         
mytabe         
字段1    username     字符串型(姓名)         
字段2    age          数字型(年龄)         
字段3    birthday      日期型(生日)         
字段4    marry        布尔型(是否结婚,结婚为True,未结婚为False)         
字段5    leixing       字符串型(类型)         
1.     插入字符串型 
假如要插入一个名为张红的人,因为是字符串,所以Insert语句中名字两边要加单撇号,
如:          strsql=“Insert into mytable(username) values(‘张红')”       
如果现在姓名是一个变量thename,则写成         
strsql=”Insert into mytable(username) values(‘” & thename & “')”    
这里Insert into mytable(username) values(‘是张红前面的部分,thename是字符串变量,') 是张红后面的部分。
将thename变量替换成张红,再用&将三段连接起来,就变成了 strsql=“Insert into mytable(username) values(‘张红')”。
如果要插入两个字段,如姓名为“张红”,类型为“学生”        
strsql=“Insert into mytable(username,leixing) values(‘张红','学生')”        
如果现在姓名是一个变量thename,类型也是一个变量thetype,
则写成:          strsql=”Insert into mytable(username,leixing) values(‘” & thename & “','” & thetype & “')”       
和第一个例子一样,将thename和thetype替换后,再用连接符,就连接成和上面一样的字符串了。         
2.     插入数字型      
假如插入一个年龄为12的记录,要注意数字不用加单撇号:        
strsql=“Insert into mytable(age) values(12)”          如果现在年龄是一个变量theage,则为:        
strsql=“Insert into mytable(age) values(“ & theage & “)”         
这里Insert into mytable(age) values(是12前面的部分,theage是年龄变量,)是12后面部分。
将theage替换,再用&连接符将三部分连接起来,就变为了和上面一样的字符。       
3.     插入日期型   
日期型和字符串型类似,但是要将单撇号替换为#号。(不过,access数据库中用单撇号也可以)   
strsql=“Insert into mytable(birthday) values(#1980-10-1#)”       
如果换成日期变量thedate          strsql=“Insert into mytable(birthday) values(#” & thedate & “#)”      
4.     插入布尔型  
布尔型和数字型类似:只不过只有两个值 True和False,
如:          strsql=“Insert into mytable(marry) values(True)”        
如果换成布尔变量themarry      
strsql=“Insert into mytable(birthday) values(” & themarry& “)”       
5.     综合示例       
插入一个姓名为张红,年龄为12的记录        
strsql=“Insert into mytable(username,age) values(‘张红',12)”        
仔细注意上式:因为姓名是字符串,所以张红两边加了单撇号;年龄是数字,所以没有加单撇号。     
如果换成字符串变量thename和数字变量theage,则变为:       
strsql=“Insert into mytable(username,age) values(‘” & thename & “',” & theage & “)”    
注意上式,总之,替换变量,再连接后要完成和上边一样的字符串。      
6.     小窍门     
   有一位同学摸索出了一个小窍门,要把下面的语句题换成变量的写法:    
   strsql=“Insert into mytable(username) values(‘张红')”        
   第一步:先把张红抹去,在原位置加两个引号       
   strsql=“Insert into mytable(username) values(‘”   “')”        
   第二步:在中间添加两个连接符&        
   strsql=“Insert into mytable(username) values(‘” & & “')”       
   第三步:把变量写在两个连接符之间         
   strsql=“Insert into mytable(username) values(‘” & thename & “')” -

(0)

相关推荐

  • 一个单引号引发的MYSQL性能问题分析

    对于大型的系统而言,Oracle,SQLServer无疑是最好的选择,可看看现在越来越多的小网站,他们没有自己的服务器,只是买别人的空间和数据库,但这种小型的数据库在性能上当然和大型数据库没有对比性,但小型的数据库也要对自己的优化方式,今天和大家分享Mysql中加没加单引号的巨大区别,对于MYSQL性能优化很有意义. 刚刚我们说过了,生活中难免会有一些不如意,比如,我们用一个字符串类型的字段来作为主键,表面上,这太不如意了,然而,事实也证明这是有用的.问题也就出来了,当在查询语句中对该字段值加上

  • 关于Mysql查询带单引号及插入带单引号字符串问题

    Mysql查询带引号和不带引号区别 当数据库字段ID为整型时 select ID from table where ID=1 和 select ID from table where ID='1' 两条sql都是可以的,但是第一条sql不用进行隐式转换,速度上比第二条sql略快一些 今天在向mysql数据库中插入带单引号字符串的时候,什么错也没报就是语句执行失败,后来才知道,单引号等要转义,可以使用函数:mysql_real_escape_string和addslashes函数: 以下做个介绍:

  • SQL注入中绕过 单引号 限制继续注入

    包括我写的那篇<SQL Injection的实现与应用>也是这样的例子,因为没有碰到任何的过滤,所以使我们相当轻松就注入成功了,如下: 复制代码 代码如下: http://www.jb51.net/show.asp?id=1;exec master.dbo.xp_cmdshell 'net user angel pass /add';-- 这往往给大家造成误解,认为只要变量过滤了'就可以防止SQL Injection攻击,这种意识为大量程序可以注入埋下祸根,其实仅仅过滤'是不够的,在'被过滤的

  • 基于mybatis中test条件中单引号双引号的问题

    目录 test条件中单引号双引号问题 具体原因 动态sql中test的一些问题 mybatis动态sql中OGNL中type=="1"和type='1'的区别 解决方案 test条件中单引号双引号问题 在mybatis中test判断条件中使用单引号会报错 通常使用双引号 通常test后的判断条件写在双引号内,但是当条件中判断使用字符串时应该如下方式开发 <when  test="channel ==null" > <when  test='chan

  • js 单引号替换成双引号,双引号替换成单引号的实现方法

    1.双引号替换成单引号 var _adrobj = JSON.stringify(address).replace(/\"/g,"'");ps: var a = {a:1,b:2}; JSON.stringify(a)====>"{"a":1,"b":2}" 2.单引号替换成双引号 var _nstr = _adrdata.replace(/'/g, '"');ps: var json = JSON.

  • 查看django执行的sql语句及消耗时间的两种方法

    下面介绍两种查看django 执行的sql语句的方法. 方法一: queryset = Apple.objects.all() print queryset.query SELECT `id`, `name` FROM `apple` 该方法只能查看select语句,但不能查看其他更新保存的语句,会报错. 也就是说只有 Queryset 有query方法.接下来看第二种方法. 方法二: from django.db import connection print connection.queri

  • SQL语句中公共字段的自动填充方法

    1. 前言 我们在设计数据库的时候一定会带上新增.更新的时间.操作者等审计信息. 之所以带这些信息是因为假如有一天公司的数据库被人为删了,尽管可能有数据库备份可以恢复数据.但是我们仍然需要追踪到这个事是谁干的,在什么时间干的,具体干了哪些事等等,方便定责和修补.但是我们变更每条数据都要去显式变更这些信息就十分繁琐,我们希望无感知的来处理这些信息. 2. 通用方式 那么有什么好的解决思路呢?在Spring Data框架中提供@CreatedBy和@LastModifiedBy来捕捉谁创建或修改的实

  • sql语句中单引号嵌套问题(一定要避免直接嵌套)

    在sql语句中,我们难免会用到单引号嵌套的时候,但是直接嵌套肯定是不行的,java中用反斜杠做转义符也是不行的,在sql中是用单引号来做转义符的. 比如下面例子是存储过程里查询时的语句示例 exec cndoup_getpageofrecords @pagesize=10,@currentpage=1,@columns='*',@tablename='ROOM',@condition='ROOMTYPElike ' %标准间%' ', @asccolumn='ROOMID', @bitorder

  • php下防止单引号,双引号在接受页面转义的设置方法

    PHP页面中如果不希望出现以下情况: 单引号被转义为 \' 双引号被转义为 \" 那么可以进行如下设置以防止: 方法一:在PHP.ini中设置:magic_quotes_gpc = Off 方法二: $str=stripcslashes($str)

  • php 防止单引号,双引号在接受页面转义

    PHP页面中如果不希望出现以下情况: 单引号被转义为 /' 双引号被转义为 /" 那么可以进行如下设置以防止: 方法一:在php.ini中设置:magic_quotes_gpc = Off 方法二: $str=stripcslashes($str)

  • Oracle之SQL语句性能优化(34条优化方法)

    好多同学对sql的优化好像是知道的甚少,最近总结了以下34条仅供参考. (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. (2) WH

  • sql语句中单引号,双引号的处理方法

    下面我们就分别讲述,虽然说的是Insert语句, 但是Select.Update.Delete语句都是一样的. 假如有下述表格:          mytabe          字段1    username     字符串型(姓名)          字段2    age          数字型(年龄)          字段3    birthday      日期型(生日)          字段4    marry        布尔型(是否结婚,结婚为True,未结婚为False)

  • 用sql语句实现分离和附加数据库的方法

    对于用Manage Studio自己看着界面操作就可以应付了. 分离数据库: 对于用存储过程来分离数据库,如果发现无法终止用户链接,可以使用ALTER DATABASE命令,并利用一个能够中断已存在链接的终止选项来把数据库设置为SINGLE_USER模式,设置为SIGLE_USER代码如下: ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE下面是分离数据库的CMD命令 EXEC sp_detach_db D

随机推荐