---这篇文章仅是对自己的一个提醒 写的比较凌乱
declare @s datetime
declare @e datetime
declare @n varchar(10)
set @s = convert(datetime,'2006-12-01')
set @e = convert(datetime,'2007-09-09')
set @n = 'm'
select * from sales.orders where orderdate between @s and @e and shipcity like @n+'%'
shipcity like +''+@n+'%'
shipcity like ''+@n+'%'
shipcity like +@n+'%'
这四种like的写法在本例中都是正确的。
在sqlserver中+除了算数运算外,就是用作字符串相加的(脑子中要有字符串相加的概念)。
解析字符串相加的过程如下:
because @n='m'
so ' '+@n+'%'=' '+'m'+'%'='m%'
如declare @ss nvarchar(50);
set @ss='I am'+' andy';
select @ss;
print I am andy--------I am andy是字符串 相当于'I am andy'
like后面出现的东西必须是字符串 用加号可以拼接多个字符串
like的原型就是 name like 'm%'
变量的形式: shipcity like ''+@n+'%'
实际的形式应该是: shipcity like 'n%'
那''+@n+'%' 怎么解析成了'n%'呢 这个问题困扰很久了
解惑 because @n='m'
so ' '+@n+'%'=' '+'m'+'%'='m%'
问题解答完毕。
再举一例对动态sql中的变量拼接进行一下讨论:
declare @s datetime;
declare @e datetime;
declare @n varchar(10);
declare @sql nvarchar(1000);
set @s = convert(datetime,'2006-12-01')
set @e = convert(datetime,'2007-09-09')
set @n = 'm'
set @sql = 'select * from sales.orders where orderdate between '' '----------最前好最后一个单引号是一对表示字符串 这两个‘''’单引号表示一个单引号(单引号转义),包含转义后的一个单引号是betwwen的语法要求(如:startdte between '2009-12-01' and '2009-12-09')
+convert(varchar,@s,120)---------这是个字符串,相当于'2006-12-01'
+' '' and '' '
+convert(varchar,@e,120)
+' '' and shipcity like ''% '
+@n
+' %'' '
exec(@sql)
print @sql;
print @sql打印出的内容如下:
select * from sales.orders
where orderdate between '2006-12-01 00:00:00' and '2007-09-09 00:00:00'
and shipcity like '%m%'
分享到:
相关推荐
sql server拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。
SQL语句拼接
sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术
SQL查询结果拼接
sql拼接:不要拼接Sql,而要使用参数的好处 在实际开发中,经常会需要对数据库进行访问,最常见的开发方法就类似
动态拼接sql语句工具类,拼接where后面语句 配合原生jdbc仿动态sql注入 if (ObjectUtil.isNotEmpty(maxLat)&&ObjectUtil.isNotEmpty(minLat)){ sqlParamList.add(new SqlParam("lat",minLat, SqlOpEnum.GE)); ...
SQL语句格式化工具,可语法加亮显示,可将大段SQL拼成程序代码,免去手工拼接之苦。也可将代码还原成SQL,便于在数据库IDE中查询调试。操作简单,省去不少拼接的时间,推荐使用。
sql 动态拼接 防止sql注入
SQL解惑(第2版)
简化sql拼接过程,提升开发效率,减少拼接错误。 可以拼接select、update、delete语句以及where条件语句。 拼接where条件可自动组织参数并返回。 支持andEq(), andGt(), andGe(),andLt(), andLe(), andEqDate(), ...
MyBatis动态拼接SQL
SQL变量声明和赋值知识归纳 菜鸟进 高手路过
简洁明了,类似于hibernate的criteria,不依赖其他任何框架和包,还具备防注入能力。我从githug找到一个原始版本,功能不完善且太复杂。我fork了自己的一个版本,有高手可以跟进下...
动态sql拼接
动态SQL与绑定变量 动态SQL与绑定变量
针对不确定的查询参数,简化SQL语句的拼写代码。目前支持Oracl及MySql数据库
解惑SQL
动态SQL 并且把返回的值赋给变量,sp_executesql,动态sql语句基本语法
多种 数据库通用类 通用sql语句拼接 通用各种数据库功能的操作
要输出ibatis 的全部sql只能有日志输出,在做项目的时候一直调试不能整出整条sql 工程为自己亲测,用于sql拼接输出