- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
quotename的用法
SQL2005关于quotename的用法(转)
首先,sqlserver里的标识符有一定的规则,比如?create table abc 123 ... 那么中间含有空格,它不是符合规则的。 你会写做 create table [abc 123] .... 即以[]来定界标识符。quotename将 字串成为有效的标识符。 它有什么用呢? 我举个例子:
你有个表名字叫做 aa[]bb 当某些应用动态语句查询时 你如何写呢 exec select * from aa[]bb ?Xset @sql select * from + quotename aa[]bb exec @sql 当然你也可以直接写出转义的写法 select * from [aa[]]bb] 也就是说,quotename 使函数中的输入成为一个有效的标识符。 比如上例中 aa[]bb 不是一个有效的标识符。还有一点就是quotename函数有几种写法: ? quotename aa 生成的有效的标识符为 [aa] ? quotename aa, 生成的有效的标识符为 [aa] ? quotename aa, 生成的有效的标识符为 aa
解释2:
简单来说吧比如你有一个表,名字叫 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 分隔符的 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 下面是结果集: [abc[]]def]
1 row s affected 请注意,字符串 abc[]def 中的右方括号有两个,用于指示转义符。
为什么输出结果是:[abc[]]def]呢?
[abc[]]def] 分解成 []]中间的]是表示右边的]是原样输出也就是说]]就表示] 就跟中的要用来表示一样
就是说和]]转义后得到-- ] 和两个单引号转义成一个单引号是一个道理
quotename函数看分隔符是什么因为默认是[ ] ,如果用的是 作分界符,那么 SELECT QUOTENAME abc[]def
就不会发生转义了.
select QUOTENAME abcdef, --分隔符是两个单引号-- abcdefselect QUOTENAME abc]def --分隔符是]-- [abc]]def]select QUOTENAME abc def, --分隔符是 -- abc def
示例:
create table tab [i[]]d] int ;goselect name from sys.columns where object_id object_id tab ;/* i[]d */
也就是说:SELECT QUOTENAME abc[]def ,quotename函数默认分隔符是[ ] 所以在给quotename abc[]def 需要对abc后的[]进行转义,如果quotename abc[]def, 也就是设置了分隔符为 就不会发生转义,该转义取决于分隔符.
简单的说假设你要在
您可能关注的文档
最近下载
- 国家开放大学学前教育科研方法大作业答案.docx
- 配电工程 投标方案(技术方案).docx
- 2023年11月金华十校2024届级高三一模历史试卷(含答案).docx
- 2024《教育科学研究项目课题设计论证》:大班幼儿入学准备主题课程构建的实践研究7400字.doc
- 机电应用技术专业典型案例——校企融合、实景教学办学模式的创新.docx VIP
- 丙型肝炎病毒实验室检测技术规范(2023年修订版).pdf
- 中国客票销售发展模式论文.pdf
- 广东省茂名市电白区2023-2024学年七年级上学期期中数学试卷.pdf VIP
- 国家开放大学《管理英语4》边学边练Unit 5-8(答案全).docx VIP
- 《烹饪美学》 第四章 菜点造型艺术.pptx
文档评论(0)