前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >quotename函数的理解

quotename函数的理解

作者头像
全栈程序员站长
发布2022-09-15 12:20:57
3490
发布2022-09-15 12:20:57
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

首先,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))

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档