quotename函数的理解

quotename函数的理解,第1张

概述首先,sqlserver里的标识符有一定的规则,比如 你 create table abc 123(...) 那么中间含有空格,它不是符合规则的。 你会写做 create table [abc 123](....) 即以[]来定界标识符。 quotename将 字串成为有效的标识符。 它有什么用呢? 我举个例子。 你有个表名字叫做 aa[]bb 当某些应用动态语句查询时 你如何写呢 exec('s

首先,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 不是一个有效的标识符。

简单来说吧比如你有一个表,名字叫 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))

总结

以上是内存溢出为你收集整理的quotename函数的理解全部内容,希望文章能够帮你解决quotename函数的理解所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1181688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存