转自:https://www.cnblogs.com/suizhikuo/p/4691696.html

语法
QUOTENAME ( 'character_string' [ , 'quote_character' ] )
参数
'character_string'    Unicode 字符数据构成的字符串。character_string 是 sysname 值。
'quote_character'    用作分隔符的单字符字符串。可以是单引号 (')、左方括号或右方括号 ([ ]) 或者英文双引号 (")。如果未指定quote_character,则使用方括号。
实验
quotename函数看分隔符默认是[ ]
select quotename('df[]jls') 输出结果:[df[]]jls]
select quotename('df[]jls',']') 输出结果:[df[]]jls]
select quotename('df[]jls','') 输出结果:[df[]]jls]
select quotename('df[]jls','''') 输出结果:'df[]jls'
select quotename('df[]jls','}') 输出结果:{df[]jls}
select quotename('df{}jls','}')  输出结果:{df{}}jls}
请注意,字符串 df[]jls 中的右方括号有两个,用于指示转义符。
为什么输出结果是:[df[]]jls]呢?
[df[]]jls]
分解成
[]]中间的]是表示右边的]是原样输出也就是说]]就表示]
就跟''中的'要用''来表示一样
就是说和]]转义后得到 ] 和两个单引号转义成一个单引号是一个道理
实际用途
简单来说吧
比如你有一个表,名字叫 index
你有一个动态查询,参数是表名
declare @tbname varchar(256)
set @tbname='index'
---查这个表里的数据:
print('select * from '+@tbname)
exec('select * from '+@tbname)
--这样print出来的数据是
select * from index
因为index是字键字,肯定出错,加上括号就可以了:
select * from [index]
这便有了QUOTENAME,即:
print('select * from '+QUOTENAME(@tbname))
--结果:select * from [index]
exec('select * from '+QUOTENAME(@tbname))
或者说你的表名如果是abc 123话,直接查询一定会出错,而你由不得不把表名当做参数,这是你就可以使用quotename来进行转义
总结
quotename的主要作用就是当列名,表名,存储过程,等数据库对象需要一参数的形式传递是,为了确保参数的有效性你可以使用quotename来进行转义,当然也可以在两边加上‘[]’,但是这样写很明显会增加代码的复杂性

SqlServer中quotename用法与实例相关推荐

  1. python管道怎么使用_python中管道用法入门实例

    python中管道用法入门实例 本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consum ...

  2. 数据库 SQLServer中GUID用法介绍

    数据库 SQLServer中GUID用法介绍 1.NEWID用法 NEWID()作用是生成无顺序的GUID字符串.用法如下: SELECT NEWID() --生成36位的GUID SELECT RE ...

  3. python管道界面_python中管道用法入门实例

    本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consumer(pipe): output ...

  4. 数据库:SQLServer中GUID用法介绍

    今天给大家分享一下SQLServer中生成GUID的用法. 一.NEWID用法 NEWID()作用是生成无顺序的GUID字符串.用法如下: SELECT NEWID() --生成36位的GUIDSEL ...

  5. android surface编程,Android中SurfaceView用法简单实例

    本文实例讲述了Android中SurfaceView用法.分享给大家供大家参考,具体如下: 这里贴上一个小程序代码,主要运用SurfaceView来实现在屏幕上画一个圆,你可以通过按方向键和触摸屏幕来 ...

  6. Vue3和element plus 中ref用法元素实例操作

    在 vue3 中,组件的逻辑可以放在 setup 函数里面,但是 setup 中不再有 this,所以 vue2 中的 this.$refs 的用法在 vue3 中无法使用. 用法是: element ...

  7. python中frame用法_Python实例之wxpython中Frame使用方法

    本节为大家分享的例子是wxpython Frame的用法. 例子: 代码如下: #!/usr/bin/python # -*- coding: GBK -*- # simple.py import w ...

  8. jquery中cookie用法实例详解(获取,存储,删除等)

    这篇文章主要介绍了jquery中cookie用法,结合实例详细分析了jQuery操作cookie的获取,存储,删除等操作,并附带了Jquery操作Cookie记录用户查询过信息实现方法,需要的朋友可以 ...

  9. SQLServer 中自增(identity)用法

    SQLServer 中自增(identity)用法 一.含义   identity表示该字段的值会自动更新,不需要我们维护,通常情况下我们不可以直接给identity修饰的字符赋值,否则编译时会报错. ...

最新文章

  1. +7白盒测试与黑盒测试的定义与区别
  2. MyEclipse极速优化
  3. NIO详解(十):FileChannel零拷贝技术
  4. DDD领域驱动之干货(二)
  5. tcpdump过滤某个端口
  6. 计算机美国学游戏开发,【工程与计算机】一石二鸟:开发游戏为申美国名校加码...
  7. Linux安装配置tomcat
  8. C语言 如何判断一个主机是大端还是小端
  9. c调用python接口_通过Python自带C/C++接口实现python与c/c++相互调用
  10. linux命令快速手记 — 让手指跟上思考的速度(四)
  11. 手把手Java爬虫教学 - 1. 了解爬虫
  12. CS231n 课程(笔记内容 by Aries.Y)
  13. 第十五届全国大学生智能车全国总决赛获奖信息-创意组获奖信息
  14. C++Builder:定时器Timer控件
  15. Mach-O入门理解
  16. win7系统还原点来还原系统
  17. 晶圆检测显微镜是做什么研究才用到的?
  18. 注册oracle驱动,[XXX] 注册了JDBC驱动程 序 [oracle.jdbc.OracleDriver]
  19. App测试中IOS和安卓测试的区别
  20. NV12 和 NV21的区别

热门文章

  1. PCA构建点云包围盒
  2. 最新uni-app实战仿糗事百科app开发教程完整版
  3. Python3: 正则表达式 - re 模块
  4. Xgboost原理介绍,通俗易懂
  5. 无线路由器信道干扰事件
  6. [日推荐]『共享记账』你的私人会计师!
  7. java发送微信小程序模板消息_微信小程序-发送模板消息
  8. 快递100查询地图轨迹API接口案例代码
  9. Java8 新特性:Lambda 表达式、方法和构造器引用、Stream API、新时间与日期API、注解
  10. 肖博高中数学必备知识点总结大全