quotename()函数 

quotename()函数 请教quotename函数的理解,我已经看了很多帮助,储如以下示例 QUOTENAME(Transact-SQL)返回带有分隔符的Unicode字符串,分隔符的加入可使输入的字符串成为有效的MicrosoftSQLServer2005分隔标识符。Transact-SQL语法约定语法QUOTENAME(‘character_string'[,’q…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

请教quotename函数的理解,我已经看了很多帮助,储如以下示例 
QUOTENAME (Transact-SQL)

返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效的 Microsoft SQL Server 2005 分隔标识符。

Transact-SQL 语法约定

语法

QUOTENAME ( ‘character_string’ [ , ‘quote_character’ ] )  参数
‘character_string’

Unicode 字符数据构成的字符串。character_string 是 sysname 值。

‘quote_character’

用作分隔符的单字符字符串。可以是单引号 (‘)、左方括号或右方括号 ([ ]) 或者英文双引号 (“)。如果未指定 quote_character,则使用方括号。

返回类型
nvarchar(258)

示例
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符。

复制代码
SELECT QUOTENAME(‘abc[]def’)下面是结果集:

可是我还是不能理解 ,能不能请高手讲得通俗点.
===============================================================
首先,sqlserver里的标识符有一定的规则,比如  你
create table abc 123(…)
那么中间含有空格,它不是符合规则的。

你会写做 create table [abc 123](….)
即以[]来定界标识符。

quotename将 字串成为有效的标识符。

它有什么用呢? 我举个例子。

你有个表名字叫做 aa[]bb

当某些应用动态语句查询时 你如何写呢
exec(‘select * from aa[]bb’)
?

set @sql=’select * from ‘ + quotename(‘aa[]bb’)
exec(@sql)

当然你也可以直接写出转义的写法

select * from [aa[]]bb]

也就是说,quotename 使函数中的输入成为一个有效的标识符。
比如上例中 aa[]bb 不是一个有效的标识符。
===============================================================
谢谢大师指点,以下是MSDN中的解答
示例
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符。

复制代码
SELECT QUOTENAME(‘abc[]def’)下面是结果集:

复制代码
[abc[]]def]

(1 row(s) affected)请注意,字符串 abc[]def 中的右方括号有两个,用于指示转义符。

我不明白为什么

SELECT QUOTENAME(‘abc[]def’) 结果集 是 [abc[]]def]

为什么中间多了一个]符号呢
结果应该就是
[abc[]def]
是不是MSND解答错误呢

===============================================================
如果是你写的那个结果,就又不对了,因为[]这个是一对!!!

因此要加个做个转义符,避免错误!
===============================================================
还有一点就是quotename函数有几种写法:
  quotename(‘aa’) 生成的有效的标识符为 [aa]
  quotename(‘aa’,”) 生成的有效的标识符为 [aa]
  quotename(‘aa’,””) 生成的有效的标识符为 ‘aa’
===============================================================
简单来说吧
比如你有一个表,名字叫 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))

===============================================================
明白了,非常感谢,我看到这个函数经常被用到行转列中,我还以为跟行转列有什么关系呢,呵呵,看来行转列关键因素不在这个函数上,非常感谢感谢各位大师的指点
===============================================================

转载于:https://www.cnblogs.com/qiantuwuliang/archive/2009/05/31/1492802.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164267.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python游戏编程(Pygame)

    Python游戏编程(Pygame)安装PygamepipinstallpygameC:\Users>pipinstallpygameCollectingpygameDownloadinghttps://files.pythonhosted.org/packages/3e/f5/feabd88a2856ec86166a897b62…

    2022年6月21日
    23
  • 粘包现象_光柱现象

    粘包现象_光柱现象粘包现象当多条消息发送时接受变成了一条或者出现接收不准确的情况粘包现象会发生在发送端两条消息间隔时间短,长度短就会把两条消息在发送之前就拼在一起节省每一次发送消息回复的网络资源粘包现象会发生在接收端多条消息发送到缓存端,但没有被及时接收,或者接收的长度不足一次发送的长度数据与数据之间没有边界本质:发送的每一条数据之间没有边界–例:importsocketsk=…

    2022年8月11日
    11
  • Java的Volatile关键字的作用

    Java的Volatile关键字的作用VolatileVolatile概念是Java特有的。如果你理解它解决的问题,会更容易理解它。如果一个变量,例如一个计数器正在被一个线程使用,有可能计数器的一个副本放在CPU高速缓存里,并且每次修改时,仅修改高速缓存的内容,而不是写到主存。JVM会决定什么时候更新主存。甚至当其他线程从主存里读取计数器的值时,有可能读到过期的值。如果一个变量用volatile修饰,不论一个线程读还是写此变量,总是从主存里读写。作为进一步的保证,当一个写线程写一个volatile修饰的变量时,写线程能看到的所有变

    2022年5月16日
    29
  • 我是一个Java class(以小说的方式,叙述完我的一生,很精彩)

    我是一个Java class(以小说的方式,叙述完我的一生,很精彩)

    2021年8月2日
    72
  • Filter体现职责链模式

    Filter体现职责链模式

    2021年12月6日
    42
  • matlab非线性整数优化,fmincon整数优化

    matlab非线性整数优化,fmincon整数优化MATLAB非线性优化fmincon_数学_自然科学_专业资料。精心整理act…注意:[1]fmincon函数提供了大型优化算法和中型优化算法。默认时,若…[x,fval,exitflag]=fmincon(@ff8,x0,[],[],[],[],[],[],nonlcon)四、整数线性规划算法说明:下面给出用分枝定界法求解整数线性规划的M函数文件……fminc…

    2022年5月6日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号