在使用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 拼接字符串的问题相关推荐

  1. java sql拼接字符串_SQL中字符串拼接

    1. 概述 在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性. sqlserver: select '123'+'456' ...

  2. oracle数据库中用sql拼接字符串和转成clob存储在数据库中

    1.转成字符串,存储到数据库中 -- B.DESCRIPT73,为需要转换的字段 --||'<br />'则代表在需要转换的字段后面拼接上一个换行符,存到数据库中 select F.POL ...

  3. python中sql拼接字符串过程

    a,b(是数字) sql="insert into stock_staff VALUES(a,b,c,d)" sql="insert into stock_staff V ...

  4. MySQL 批量生成 SQL 脚本语句解决实际的业务需求/如何拼接字符串/拼接字符串的 SQL 语句

    文章目录 实际需求 分析思路 写拼接 SQL 脚本的脚本语句 执行得到脚本语句 保存成 SQL 脚本文件 实际需求 有些行政区域的字段 area_fullname 是空的,如何补全呢?如下所示: 分析 ...

  5. java通过+拼接字符串导致的无效SQL,三目运算符与+运算符结合使用时需要注意了

    调试代码的过程中遇到一个比较尴尬的问题,java代码中先进行sql拼接,然后再执行拼接后的sql,即一个又臭又长的字符串.设计到sql拼接的情况,我个人比较喜欢用StringBuilder拼接,毕竟使 ...

  6. 含有参数的sql拼接_深入讲解SQL中的字符串拼接

    一.概述 相信大家在日常开发中,在SQL语句中经常需要进行字符串拼接,以sqlserver,oracle,mysql三种数据库为例,因为这三种数据库具有代表性. sqlserver: select ' ...

  7. 后台获取前台传递参数为null和空字符串的区别,以及sql拼接之if判断

    1.获取到的值为null 当URL路径中没有"name"属性,此时后台使用request.getParameter("name")获取到的值为null; 2.获 ...

  8. 不能用 + 拼接字符串? 这次我要吊打面试官!

    好久没维护<吊打面试官>系列了,今天再来一篇,这次真的要吊打了,哈哈!(看往期吊打系列请在后台回复:吊打,我会陆续更新--) 我们做 Java 程序员以来,不管是工作当中,还是面试过程中, ...

  9. server多笔记录拼接字符串 sql_Java拼接“1亿行字符串”你会遇到什么问题?

    拼接"1亿行字符串"你会遇到什么问题? 本文将涉及到的三方面的内容,如下: 1,一个10万次的for循环,4种实现的性能对比 2,直接将For循环改为1亿次,遇到的问题 3,拓展 ...

  10. oracle拼接字符串报错,Oracle 中wmsys.wm_concat拼接字符串,结果过长报错解决

    备忘:这个函数最大是4000,根据拼接列的长度,通过限制拼接条数来防止拼接字符串过长错误 --这个情况是从子表中读取出具,这里直接把它当做查询字段处理,在子表中有所有数据 select info.id ...

最新文章

  1. JavaScript中的函数
  2. java 反序列化 ysoserial exploit/JRMPListener 原理剖析
  3. FCKeditor 2.4.3精简优化带代码高亮(Dphighlighter)插件版
  4. 红米手机停在机器人这里_iQOO Z1和红米K30 至尊纪念版,谁更值得选择?
  5. html 定时刷新 数据,js中,设置定时器 每隔几秒刷新一次页面数据
  6. sudo apt-get install libstdc++6
  7. C++ 不懂的地方 记录01
  8. 人工神工机器人是什么_为什么企业要用电销机器人代理人工
  9. WPF案例 (六) 动态切换UI布局
  10. redis运维问题集锦FAQ
  11. 一招win7 c盘瘦身
  12. LitJson写入中文乱码问题
  13. 2022年2月份报告合集(共326份)
  14. Douyu0.6.1 源码分析 之 MVC篇
  15. 【Ant Design Vue】封装导出Excel文件的功能模块到ele-pro-table
  16. 十进制小数化为二进制小数的方法是什么_二进制的转换
  17. SLAM【十】回环检测
  18. 根本原因分析(RCA)
  19. 湖南农业大学有计算机应用,计算机应用基础复习资料–湖南农业大学.doc
  20. java 数组的扩容,缩容,插入元素,查找元素 详解(通俗易懂)

热门文章

  1. Atitit.视频文件加密的方法大的总结 java c# php
  2. 专访凯美瑞德研发总监孟江华:银行间市场操作系统的自主可控亟待加强
  3. Julia : “;”和[] 引发的差别
  4. Java的executorservice_ExecutorService-10个要诀和技巧
  5. 常见花材的固定的方法有哪些_固定无梁拱形屋顶的方法都有哪些呢?
  6. 【优化求解】基于matlab改进的灰狼算法求解重油热解优化模型【含Matlab源码 164期】
  7. jvm调优工具_高级程序员必会的5个JVM性能监控、调优工具使用详解
  8. 机器学习时会发生什么
  9. centOS7.6 服务器配置环境
  10. Eclipse Maven项目搭建SSM