`
冷寒冰
  • 浏览: 252996 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sql变量拼接解惑

    博客分类:
  • sql
SQL 
阅读更多

---这篇文章仅是对自己的一个提醒 写的比较凌乱

 

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语句拼接

    ### SQL语句拼接 #### 知识点一:SQL语句拼接的基本概念与应用场景 在实际开发过程中,为了实现动态SQL查询的功能,开发者常常需要根据不同的条件来构造SQL语句。这种根据条件动态生成SQL的过程就被称为SQL语句...

    sql拼接:不要拼接Sql,而要使用参数的好处

    在上述示例中,`name` 变量直接被嵌入到SQL语句中。如果`name` 的值是由用户输入提供的,那么恶意用户可能会利用这一点注入恶意的SQL代码。例如,如果`name` 的值被设为 `' OR '1'='1`,则整个SQL语句变为: ```sql...

    sql语句拼接+游标技术

    sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术sql语句拼接+游标技术

    开发sql语句拼接自动格式化工具

    SQL语句格式化工具是一种非常实用的开发辅助软件,它主要解决了在编写和维护大量SQL代码时遇到的格式混乱和拼接困难的问题。通过这款工具,开发者可以快速地将大段的SQL语句进行自动格式化,使得代码更加清晰、易读...

    动态拼接sql语句工具类,拼接where后面语句

    动态拼接sql语句工具类,拼接where后面语句 配合原生jdbc仿动态sql注入 if (ObjectUtil.isNotEmpty(maxLat)&&ObjectUtil.isNotEmpty(minLat)){ sqlParamList.add(new SqlParam("lat",minLat, SqlOpEnum.GE)); ...

    SQL拼接工具包API 支持Oracle/PostgreSQL/MySql

    简化sql拼接过程,提升开发效率,减少拼接错误。 可以拼接select、update、delete语句以及where条件语句。 拼接where条件可自动组织参数并返回。 支持andEq(), andGt(), andGe(),andLt(), andLe(), andEqDate(), ...

    易语言动态拼接sql语句

    在编程领域,动态拼接SQL语句是一种常见的技术,它允许程序在运行时根据需要构建SQL查询。在易语言这个中国本土化的编程环境中,动态拼接SQL同样具有重要的应用价值。易语言以其独特的汉字编程风格,降低了编程的...

    sql 动态拼接

    sql 动态拼接 防止sql注入

    动态SQL 并且把返回的值赋给变量

    ### 动态SQL 并且把返回的值赋给变量 在SQL Server中,动态SQL是一种强大而灵活的工具,允许开发人员根据运行时条件构建并执行SQL查询。本文将详细介绍如何利用`sp_executesql`来执行动态SQL,并重点讨论如何将执行...

    SQL解惑 第二版(中文)pdf带目录

    《SQL解惑 第二版(中文)》是一本专门针对SQL语言疑难点进行解析的书籍,旨在帮助读者在实践中理解和掌握SQL的各种特性和技巧。这本书以其独特的案例解析方式,为学习SQL的人提供了一种生动、易懂的学习路径,避免...

    在Sql Server查询语句中能不能用变量表示表名

    在拼接SQL语句时,始终应该使用参数化查询,而不是直接插入变量值,以避免潜在的安全问题。 标签中提到的“源码”可能指的是存储过程中的源代码,因为这是使用变量表示表名的常见场景。而“工具”可能指的是SQL ...

    sql字符拼接类

    简洁明了,类似于hibernate的criteria,不依赖其他任何框架和包,还具备防注入能力。我从githug找到一个原始版本,功能不完善且太复杂。我fork了自己的一个版本,有高手可以跟进下...

    SQL2JAVA-java字段串代码拼接小工具

    标题中的“SQL2JAVA-java字段串代码拼接小工具”是指一个辅助开发的软件,它主要功能是帮助程序员便捷地在Java代码和SQL语句之间进行转换,特别是处理字符串拼接的问题。在软件开发过程中,尤其是在数据库交互时,...

    ibatis企业开发报表前调试(日志,复杂sql动态拼接)

    配置完成后,当你运行项目并执行SQL操作时,Ibatis会将所有的SQL语句,包括动态SQL的拼接过程,以及绑定的参数等信息输出到控制台。这对于调试和性能优化非常有帮助,尤其是处理复杂的动态SQL时,可以清晰地看到最终...

    SqlUtils工具类,Sql IN 条件拼接工具类

    `SqlUtils`工具类是Java开发中用于处理SQL语句拼接的一个实用工具,特别是针对包含`IN`条件的查询。在数据库操作中,`IN`关键字常用于筛选满足特定集合条件的记录。例如,假设我们需要查找ID在一组值中的用户,我们...

    SQL解惑解惑

    SQL解惑解惑,意味着我们将深入探讨SQL的常见问题、概念以及解决策略。在这个过程中,我们不仅要理解SQL的基本语法,还要掌握如何有效地查询、更新和管理数据。 首先,让我们从SQL的基础开始。SQL分为四大主要部分...

    Java 使用注解拼接SQL语句

    "Java使用注解拼接SQL语句"是一个常见的实践,它使得动态构建SQL查询变得更为简洁和可维护。这种技术通常与ORM(对象关系映射)框架如MyBatis或Hibernate结合使用,但也可以通过自定义处理逻辑实现。 1. **自定义...

    动态拼接sql语句.rar

    动态拼接SQL语句在IT行业中是一个常见的编程实践,尤其在数据库操作中,它允许根据程序运行时的条件或变量来构建SQL查询。这一技术在处理复杂查询逻辑、灵活的数据筛选以及减少代码冗余等方面具有显著的优势。然而,...

    多种 数据库通用类 通用sql语句拼接 通用各种数据库功能的操作

    在IT行业中,数据库是存储和管理数据的核心工具,而数据库通用类和通用SQL语句的拼接技术则是实现跨数据库平台高效开发的关键。本话题主要围绕如何设计和使用这些技术来实现不同数据库系统的增删改查操作、事务管理...

Global site tag (gtag.js) - Google Analytics