`
冷寒冰
  • 浏览: 251032 次
  • 性别: 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 server拼接字符串和拼接一列的值

    sql server拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。

    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变量声明和赋值知识归纳

    ### SQL变量声明 在SQL中,变量用于存储数据,它们可以是在查询过程中动态生成或更改的值。变量的声明通常在存储过程、函数或其他SQL块的开始部分进行,以便在执行期间使用。以下是一些关键点: 1. **声明语法**:...

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

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

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

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

    MyBatis动态拼接SQL

    在某些场景下,我们可能需要根据业务逻辑动态地拼接SQL语句,以实现更复杂的查询需求。这就是MyBatis动态SQL的功能所在。 动态SQL是MyBatis的一大特色,它使得我们能够在运行时根据条件构建SQL语句。MyBatis通过`...

    动态SQL与绑定变量

    动态SQL与绑定变量是数据库编程中的重要概念,尤其在Oracle数据库中被广泛应用。动态SQL允许在运行时构建和执行SQL语句,而绑定变量则是在动态SQL中用于替代具体值的占位符,使得SQL语句更为灵活和高效。 ### 1. ...

    sql字符拼接类

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

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

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

    易语言动态拼接sql语句

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

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

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

    SQL解惑解惑

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

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

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

    Java 使用注解拼接SQL语句

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

    动态拼接sql语句.rar

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

Global site tag (gtag.js) - Google Analytics