关于sql 拼接字符串的问题
在使用sql语句的时候,我们经常会遇到使用字符串变量的时候,比如说,查询,str:='select * from Table where Name='''+Name+'''';在.net里面使用sqlparameter,就不需要自己手动转换了,但是在做动态拼接sql时,总是或多或少的出现问题,今天就来说说单引号拼接的问题。
下面部分案例引用园子里的其他人的,在这里说一声谢谢,最后我接着写了下自己的总结。
就像上面写那句一样,我要想把name的值传到sql语句中间,还要带上单引号,形如str:='select * from Table where Name='JueJiang‘',就要考虑delphi中单引号的用法了。
首先,单引号必须是成对的,运行之后可能会出现’123''之类的情况,但是编译期写成str := '123''肯定是不行的。
第二,单引号的意义,成对的单引号,是标准的字符串赋值格式。在成对单引号之间的单引号,每两个相当于一个转换之后的单引号字符。还是举个例子说明一下吧。
str := '''';str1 := '123''';str2 := '123'+'';------------------------------------- 显示结果:str:'str1:123'str2:123
去掉指定字符串格式的两个单引号,中间的部分,两个单引号代表一个'字符,加号运算符的效果相当于去掉中间的两个单引号。
使用变量也是一样:
str3 := '123'+Name;str4 := '123'''+Name;str5 := '123'''+Name+'';str6 := '123'''+Name+'''';------------------------------------- 显示结果:str3:123456str4:123'456 str5:123'456str6:123'456'
通常sql语句中的拼接用的都是最后的一种情况。
补充一下,双引号,在delphi没有什么特殊的含义,就是普通的字符
str7 := '"123"';------------------------------------- 显示结果:str7:"123"
最后,还有sql语句的换行,换行就相当于是两个字符串的拼接了,需要使用加号连接起来。
str:='select * from Table '+'where Name='''+Name+'''';
总结如下:所谓单引号、双引号、三引号、四引号的都说的太多,或者他们对此了解的太少,没能弄懂其中的道理,就已‘三引号’、‘四引号’来看问题,反而将问题复杂化了。
通过我对上面案例的分析,以及该园子作者的说明,我们很容易理解一个道理:sql的动态拼接只有单引号,没有什么‘三引号’、‘四引号’之说,其中‘双引号’有两种解释
一个是shift+双引号键,产生("),另一个是连续两次单引号键,产生(''),在这里好似一样,而实际在sql编辑区是不同的,代码如下:
declare @sql varchar(200)
declare @t varchar(50)='JCZX/TX-02-1609102'
set @sql='select ordernumber ,''"xxx"'' as tt from lim_TestingOrders where ordernumber='''+@t+''''
print @sql
exec(@sql)
看代码中 ''""'' as tt ;最中间的是第一中方式产生的,他只是作为一种特殊字符而已,最外面的两层引号,是第二种方式产生的,作为转译符号。
总之:单引号在sql在才起真正的作用。他有两个作用:①字符串,②转译符;凡是在两个单引号内部的两个单引号都作为单引号处理,即内部的两个单引号有个是转译的作用,产生了一个单引号
上面sql其中会生成: select ordernumber,"xxx" from lim_TestingOrders where ordernumber='JCZX/TX-02-1609102'
希望对各位有困扰的人有帮助,也感谢各位在园子里努力的兄弟们。
转载于:https://www.cnblogs.com/zhaosw/p/6088040.html
关于sql 拼接字符串的问题相关推荐
- java sql拼接字符串_SQL中字符串拼接
1. 概述 在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性. sqlserver: select '123'+'456' ...
- oracle数据库中用sql拼接字符串和转成clob存储在数据库中
1.转成字符串,存储到数据库中 -- B.DESCRIPT73,为需要转换的字段 --||'<br />'则代表在需要转换的字段后面拼接上一个换行符,存到数据库中 select F.POL ...
- python中sql拼接字符串过程
a,b(是数字) sql="insert into stock_staff VALUES(a,b,c,d)" sql="insert into stock_staff V ...
- MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句
文章目录 实际需求 分析思路 写拼接 SQL 脚本的脚本语句 执行得到脚本语句 保存成 SQL 脚本文件 实际需求 有些行政区域的字段 area_fullname 是空的,如何补全呢?如下所示: 分析 ...
- java通过+拼接字符串导致的无效SQL,三目运算符与+运算符结合使用时需要注意了
调试代码的过程中遇到一个比较尴尬的问题,java代码中先进行sql拼接,然后再执行拼接后的sql,即一个又臭又长的字符串.设计到sql拼接的情况,我个人比较喜欢用StringBuilder拼接,毕竟使 ...
- 含有参数的sql拼接_深入讲解SQL中的字符串拼接
一.概述 相信大家在日常开发中,在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性. sqlserver: select ' ...
- 后台获取前台传递参数为null和空字符串的区别,以及sql拼接之if判断
1.获取到的值为null 当URL路径中没有"name"属性,此时后台使用request.getParameter("name")获取到的值为null; 2.获 ...
- 不能用 + 拼接字符串? 这次我要吊打面试官!
好久没维护<吊打面试官>系列了,今天再来一篇,这次真的要吊打了,哈哈!(看往期吊打系列请在后台回复:吊打,我会陆续更新--) 我们做 Java 程序员以来,不管是工作当中,还是面试过程中, ...
- server多笔记录拼接字符串 sql_Java拼接“1亿行字符串”你会遇到什么问题?
拼接"1亿行字符串"你会遇到什么问题? 本文将涉及到的三方面的内容,如下: 1,一个10万次的for循环,4种实现的性能对比 2,直接将For循环改为1亿次,遇到的问题 3,拓展 ...
- oracle拼接字符串报错,Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决
备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id ...
最新文章
- JavaScript中的函数
- java 反序列化 ysoserial exploit/JRMPListener 原理剖析
- FCKeditor 2.4.3精简优化带代码高亮(Dphighlighter)插件版
- 红米手机停在机器人这里_iQOO Z1和红米K30 至尊纪念版,谁更值得选择?
- html 定时刷新 数据,js中,设置定时器 每隔几秒刷新一次页面数据
- sudo apt-get install libstdc++6
- C++ 不懂的地方 记录01
- 人工神工机器人是什么_为什么企业要用电销机器人代理人工
- WPF案例 (六) 动态切换UI布局
- redis运维问题集锦FAQ
- 一招win7 c盘瘦身
- LitJson写入中文乱码问题
- 2022年2月份报告合集(共326份)
- Douyu0.6.1 源码分析 之 MVC篇
- 【Ant Design Vue】封装导出Excel文件的功能模块到ele-pro-table
- 十进制小数化为二进制小数的方法是什么_二进制的转换
- SLAM【十】回环检测
- 根本原因分析(RCA)
- 湖南农业大学有计算机应用,计算机应用基础复习资料–湖南农业大学.doc
- java 数组的扩容,缩容,插入元素,查找元素 详解(通俗易懂)
热门文章
- Atitit.视频文件加密的方法大的总结 java c# php
- 专访凯美瑞德研发总监孟江华:银行间市场操作系统的自主可控亟待加强
- Julia : “;”和[] 引发的差别
- Java的executorservice_ExecutorService-10个要诀和技巧
- 常见花材的固定的方法有哪些_固定无梁拱形屋顶的方法都有哪些呢?
- 【优化求解】基于matlab改进的灰狼算法求解重油热解优化模型【含Matlab源码 164期】
- jvm调优工具_高级程序员必会的5个JVM性能监控、调优工具使用详解
- 机器学习时会发生什么
- centOS7.6 服务器配置环境
- Eclipse Maven项目搭建SSM