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%'

【IPAM】Netbox docker模式版本升级 NETBOX 是一个开源的网络资源管理系统,主要用于管理 IP 地址、机架、设备、接口等网络资源信息。下面是 NETBOX 的功能、优点和缺点的详细介绍。 阅读详情

相关推荐

全球AI算力最强公司分析报告

全球AI算力最强公司分析报告显示,Google凭借自研TPU技术和庞大数据中心网络位居榜首,拥有约100万至150万块等效H100 GPU算力。微软、Meta和亚马逊紧随其后,分别拥有75万、55万和25万块等效H100 GPU。中国企业中,百度、阿里巴巴和腾讯表现突出,华为在国产AI芯片领域领先。技术指标上,NVIDIA H100相比A100性能显著提升,但功耗也大幅增加。未来AI算力需求将持续激增,预计2028年全球市场将超2000亿美元。新兴挑战者如xAI可能改变竞争格局。

MyySophia的博客 5718

SQL语句和变量拼接技巧

SQL语句和变量拼接示例 如在MySQL中写了这样一句: SELECT datetime,text FROM tweetscraper.content where text not like '李洪志' order by datetime desc; 我们在python中的sql语句改写如下: 1.把引号里的数据改成变量名称,此处假设变量名字是 name,因为python中字符串语句要用引号括起来,为避免和单引号重复,我们最外面使用一个双引号,如下: sql = "SELECT datetime,text

Encore47的博客 4076

共聚焦显微镜的光源、工作原理与选型

共聚焦显微镜作为科研与工业领域中重要的微观成像工具,凭借光源的精准适配性、光学切片技术的三维成像能力,以及对不同工业场景的定制化适配潜力,为半导体检测、工业部件分析、智能制造升级提供了关键技术支撑。深入理解其光源特性、工作原理与选型逻辑,能帮助工程师与技术人员精准匹配设备与生产需求,既保障微观检测的精度与效率,又为产业优化、技术创新筑牢微观观测的基础。

PhotonixBay的博客 1539

sql语句拼接变量

sql = "insert into question_info(tg,xx,da,fx,kd) values('%s','%s','%s','%s','%s')"\ %(tg,xx,da,fx,kd) 程序中通常保存数据时会进行sql语句的拼接,传入程序中的变量,写法如上,使用字符串拼接,(tg,xx,da,fx,kd)是你程序中的变量名称,这样就可以根据表结构动态插入数据了! ...

带鱼工作室的博客 2954

从SPI到JTAG:玩转FT2232H的MPSSE多协议切换指南(附配置代码)

本文详细介绍了如何利用FT2232H芯片的MPSSE技术实现SPI与JTAG协议的无缝切换,提供配置代码和调试技巧。通过解析MPSSE引擎架构和硬件特性,帮助开发者灵活应对多种串行协议需求,提升嵌入式开发效率。特别适合FPGA调试和物联网设备开发场景。

sun99的博客 254

天爱验证码wasm验证码逆向

本文分析了某网站采用WASM加密技术的情况,发现其加密方式主要针对data和轨迹信息,整体加密逻辑变化不大。通过反混淆技术可以还原代码,并确认加密过程分为两步:先对原始参数逐个加密,再调用WASM模块进行最终加密。研究发现关键参数drives和ki都存储在WASM模块内,通过提取wasm_exec.js文件即可直接使用该加密功能。本文仅提供技术研究思路,强调严禁用于任何违法行为。

码王吴彦祖的博客 936

Mybatis的quick_start

一、概念 Mybatis框架是一个用来操作数据库的轻量级框架,该框架的本质仍然是jdbc,但是他让我们在创建好配置文件之后只需要关注要执行的SQL语句和映射器中对应的方法即可,而不需要去关注jdbc的操作数据库的过程,这一部分工作由Mybatis框架替我们去完成。 二、QuickStart 导入依赖 该项目用maven项目创建,不需要使用骨架 QuickStart需要的jar包以来有 MyS...

fangxiang163的博客 546

Agentic AI商业化落地指南:提示工程架构师的7步优化法

Agentic AI(具备自主感知、决策与行动能力的智能体系统)是未来AI商业化的核心方向,其价值在于将大模型的“认知能力”转化为“实际行动”,解决复杂商业场景中的自动化与个性化需求。而提示工程(Prompt Engineering)作为连接人类意图与智能体行为的“翻译器”,直接决定了智能体的可控性、效率与用户体验,是Agentic AI商业化落地的关键支撑。本文结合第一性原理与工程实践,提出提示工程架构师的“7步优化法”,覆盖从“商业目标定义”到“规模化推广”的全流程。通过理论框架推导架构设计拆解。

AI架构全栈开发实战笔记 1万+

动态SQL的拼接实现

只要明白以下四个小语句显示出来的效果,动态SQL的拼接就比较简单了,直白的讲,就是用变量替换掉SQL执行时的where=’?在实现此类格式表名的作业任务时,必须采用动态语句,以避免每月更换一次SQL语句的尴尬。二、小技巧:通过print打印查看自己拼接的语句是否正确,以及错误在哪里,待正确时再用exec运行输出。三、难点,动态SQL的拼接的难点是需要解决引号的应用问题,也就是where条件的拼接。一、基本语句格式:定义变量,给变量赋值,使用变量拼接SQL,语句输出。

m0_74711467的博客 624

基于MATLAB的井筒多相流模拟

井筒多相流的模拟可以基于不同的数学模型和计算方法。其中,最常用的模型之一是多相流模型,它基于质量守恒、动量守恒和能量守恒等原理,描述了流体在井筒中的流动行为。对于井筒多相流的模拟和分析可以帮助我们理解和优化油气田开发过程中的流体行为,从而提高产量和效率。在本文中,我们将介绍如何使用MATLAB进行井筒多相流的模拟,并提供相应的源代码。需要注意的是,以上示例是一个简化的模拟,仅用于演示如何使用MATLAB进行井筒多相流模拟。实际应用中,我们需要考虑更多的物理过程和参数,并使用更复杂的数值方法和模型进行模拟。

AtdiHtml的博客 706

排队论 | 排队论建模方法

排队论 | 排队论建模方法

算法如诗的博客 354

sql字符串变量拼接

sql字符串变量拼接。

qq_15949349的博客 796

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

sql语句如何拼接Java变量

当数据库字段ID为整型时 select ID from table where ID=1 和 select ID from table where ID='1' 两条sql都是可以的,但是第一条sql不用进行隐式转换,速度上比第二条sql略快一些。 String sqlString="select * from tb_wf_main where trim(WF_NAME) = ' " + w...

M_allstar的博客 8658

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

 oracle存储过程动态sql单引号拼接和变量拼接

oracle存储过程单引号拼接和变量拼接 1.单引号的作用:在oracle中单引号主要有两个作用,一是字符串都用单引号引用,例如'abc';二是转义符,转义符在使用时一般会出现多个连在一起的单引号,相对难理解一些。下面举例说明。 实例1:select '''' from dual; 实例1结果: 实例2:select 'oracle''' from dual; 实例2结果: 说明:实例1中第一个和第四个单引号是成对出现的,作用是把字符串引起来;第二个单引号表示转义符号,第三个单引号表示被转义的.

下雨天看彩虹 8376

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

jdbc中SQL语句拼接java变量,format用法

jdbc中SQL语句拼接java变量

a770115126的博客 1407

sql拼接与绑定变量

拼接sql的,一个是注入风险,再个就是数据库每次都会重新解析sql  因为每次拼接完的sql都不一样,数据库就会重新解析这sql; 而绑定变量的就不会重新解析

sdbzwangdongdong的专栏 706

SQL代码变量查询拼接

declare @BDate datetime,@EDate datetime,@KDGS nvarchar(50),@KDDH nvarchar(100),@JJDept nvarchar(50),@JJXM nvarchar(50),@SJXM nvarchar(50),@SJDZ nvarchar(100),@CDDept nvarchar(50),@CDXM nvarchar(50),@I...

luozhihuinet2020的博客 646

sql server 变量 字符串拼接

参考:SQL server中null+字符串,isnull以及把查询结果赋给一个字符变量组成另一个查询语句 1.开始定义的字符串都为null.例如:declare @sql,那么@sql就是null 如果后面要进行 变量字符串的变量拼接的话,最好是给@sql先赋值为空 或者 其他变量 需求:在一个游标内 循环获取手机号的字符串进行拼接。但是一直拼接不成功 declare @dhhm...

weixin_30325071的博客 365

Java(67)java sql语句拼接变量

Java(68)java sql语句拼接变量 原有代码: CasbMysql c = new CasbMysql(); System.out.println("CHAR类型测试"); c.DBExecute("INSERT INTO impala.keyword_seach (dt,keyword,count) VALUES( '邢伟', '北京连上我拿过来技术有限公司', '北京市' );"); 循环插入 for (int i=0;i<5;i++) {...

fen_fen的专栏 946

动态拼接 sql的时候 里面 如果有变量的话 按上面的方式进行处理

set @Sql_Sql = N' select top 1 @m_zw=zw,@m_zh=temp from ket where zd=''ddd'' ' print @Sql_Sql EXEC sp_executesql @Sql_Sql,N'@m_zw varchar(1000) outp...

weixin_34009794的博客 105

Oracle 动态执行sql/动态游标,使用拼接sql慢,可以优化为变量赋值

目录 动态执行sql 变量赋值方式: 拼接sql方式: 动态游标 变量赋值方式: 拼接sql方式: 动态执行sql 分别运行一万次,执行三遍 变量赋值方式执行三遍耗时在80毫秒左右 拼接sql方式执行三遍耗时在200毫秒左右 由此可见,变量赋值方式更快。 变量赋值方式: declare a number; begin for i in 1..10000 loop execute immediate 'select :b fr

wang_chaodong的专栏 1478

在oracle中使用动态游标时,为sql语句拼接查询出来的列值变量

问题:在使用oracle的动态游标时,我们经常需要为sql语句拼接一些变量和限定条件。如果直接拼接完整sql语句的话用 || 即可;但是如果这一列是查询出来的值赋给某个变量,这时需要转义处理! 解决:示例,将查询在第一游标内查询出来的 orderid 赋值给变量 v_orderid ,然后把 v_orderid 作为另一条查询语句的条件拼接进sql中。按如图的方式 ''||要拼接的变量|...

weixin_42342164的博客 1835

Java中如何拼接sql或者其他含有变量语句

个人浅谈Java拼接sql语句原则。本原则是个人感悟(不保证完全正确)第一条原则,首先将一条完整的字符串写好。(例如是"select * from users where id=(id+1)")凡是变量都需要在其前面加上+,且前面是要加上",如果后面不是",则后面必须也要加上+"。第二条原则如果遇上括号(id+1),那加号必定死以括号为原则的,在(号之前加上+,并且前方是",...

weixin_34301132的博客 475

关于sql语句拼接字符串变量的操作

方法: 使用sql语句拼接字符串变量时,如果使用简单的+则会使sql语句报错: 此时我的version是字符串类型,大众途观是不带单引号或者双引号的,所以sql语句会报错找不到该列。 所以我们要使用’"+“大众途观”+"'来拼接sql语句: 此时我们的"大众途观"是带引号的,sql语句就不会报错了 ...

weixin_44967580的博客 1402

Sql Server拼接字符串(字符串中有变量)

SQL SERVER拼接字符串(字符串中有变量)对我来说是一个难点,总是忘记规律,写下来以帮助记忆。 一、拼接字符串(整个字符串不分割)步骤: 首先在字符串的前后加单引号; 字符串中的变量以'''+@para+'''在字符串中表示; 若在执行时存在类型转换错误,则应用相应的类型转换函数,对变量进行类型转换(如cast()函数)。 要注意的是字符串中的变量以三个引号引起来。 ...

平行宇宙i的博客 6001
上一篇: 如何更快速获得表中记录数
下一篇: web winform导入excel 支持2003 2007
pmandy
博客等级 码龄18年 13粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值