`
冷寒冰
  • 浏览: 251750 次
  • 性别: 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语句工具类,拼接where后面语句

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

    sql 动态拼接

    sql 动态拼接 防止sql注入

    SQL美化拼接工具适用于各种开发语言

    SQL美化拼接工具是开发人员在处理复杂数据库查询时的一大利器。它可以帮助程序员将冗长、难以阅读的SQL语句转换成格式清晰、易于理解的形式,极大地提升了代码的可读性和维护性。无论你是使用Java、Python、C#、PHP...

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

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

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

    配置完成后,当你运行项目并执行SQL操作时,Ibatis会将所有的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查询。这一技术在处理复杂查询逻辑、灵活的数据筛选以及减少代码冗余等方面具有显著的优势。然而,...

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

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

    Sqlserver游标拼接

    Sqlserver游标拼接学习,简单的游标学习,直接exec执行查看结果

    sql绑定变量

    3. **安全性与效率**:通过使用绑定变量,避免了字符串拼接带来的潜在SQL注入风险,并减少了数据库对SQL语句的重复解析和优化,提升了执行效率。 总之,绑定变量是SQL编程中一个非常实用且重要的概念,它不仅可以...

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

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

    sql全局变量说明_sql_server

    在SQL Server中,全局变量是一种特殊的系统变量,它们的值在整个服务器范围内都是可见的,不受特定会话的影响。这些变量提供了关于SQL Server实例运行状态和最近执行操作的信息。以下是对标题和描述中提到的几个关键...

    SQL解惑(中文版)

    根据提供的标题、描述以及部分上下文内容,我们可以推断出这本书《SQL解惑(中文版)》主要聚焦于SQL技能的提升与深化理解。虽然实际的内容并未给出具体示例或章节概述,但根据书名及简介,我们可以围绕SQL的基础...

    前台拼接SQL语句

    在IT行业中,数据库操作是日常开发中的重要环节,而“前台拼接SQL语句”这一话题则涉及到Web应用的安全性和效率。通常,前端(前台)处理业务逻辑是不常见的,因为这可能导致敏感信息泄露和SQL注入等安全问题。这篇...

Global site tag (gtag.js) - Google Analytics