• SqlServer中quotename用法与实例


    语法
    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来进行转义,当然也可以在两边加上‘[]’,但是这样写很明显会增加代码的复杂性

  • 相关阅读:
    mysql数据库函数 concat 字段类型转化、字段拼接
    SSH2中的No result defined for action的问题
    导致表单重复提交(两次)的原因--css{url()}与a标签
    详解jar命令打包生成双击即可运行的Java程序
    21IO流 和缓冲流 和处理流
    20File
    19(1)hashmap,hashtable
    IntelliJ IDEA注册码激活
    19映射
    18泛型
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/4691696.html
Copyright © 2020-2023  润新知