三维真空http://blog.csdn.net/solidvacuum

在标准sql中,引号的使用
请注意,我们在例子中的条件值周围使用的是单引号。

SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。

文本值:
这是正确的:

SELECT * FROM Persons WHERE FirstName='Bush'

这是错误的:

SELECT * FROM Persons WHERE FirstName=Bush

数值:
这是正确的:

SELECT * FROM Persons WHERE Year>1965

这是错误的:

SELECT * FROM Persons WHERE Year>'1965'

“单引号和双引号之间的区别最早在SQL92标准中引入的。对于标识符,这个标准区分了常规标识符和分隔的标识符。两者主要的区别在于:分隔的标识符被括在双引号中(Transact-SQL也支持方括号的使用:[标识符])并且是区分大小写的。单引号只用于字符串的定界。总的来说,引入分隔的标识符是为了对标识符进行规范,否则就会与保留字相同了。特别要提到的是,分隔的标识符能够使你在命名(标识符或变量的名字)的时候,免于使用在将来的SQL标准中可能出现的保留字。另外,分隔的标识符能够包含一些在通常的标识符名称中被视为不合法的字符,如空格。   
  在SQL   SERVER中,双引号的使用由SET   语句中的QUOTED_IDENTIFIER选项来定义。如果这个选项被设为ON,则双引号中的标识符将被定义为一个分隔的标识符。在这种情况下,双引号不能被用于定界字符串。”

当   QUOTED_IDENTIFIER   为   ON   时,对于   SQL   语句中的双引号和单引号   (')   的使用,SQL   Server   遵循   SQL-92   规则:     
      双引号只能用于分隔标识符,不能用于分隔字符串。     
  为保持与现有应用程序的兼容性,SQL   Server   并不完全强制该规则。如果字符串没有超过标识符的长度,则该字符串可包含在双引号内。但不建议这样做。   
      单引号必须用来包含字符串,不能用于分隔标识符。     
  如果字符串包含单引号,则需要在单引号前再增加一个单引号:

SELECT * FROM "My Table"
WHERE "Last Name" = 'O''Brien'

当   QUOTED_IDENTIFIER   为   OFF   时,对于双引号和单引号的使用,SQL   Server   遵循如下规则:     
    
  引号不能用于分隔标识符,而是用括号作为分隔符。   
        
  单引号或双引号可用于包含字符串。     
  如果使用双引号,嵌入的单引号不需要用两个单引号来表示:

SELECT * FROM [My Table]
WHERE [Last Name] = "O'Brien"

无论   QUOTED_IDENTIFIER   的设置如何,都可以在括号中使用分隔符。   
    
  分隔标识符规则   
  分隔标识符的格式规则是:     
    
  分隔标识符可以包含与常规标识符相同的字符数(1   到   128   个,不包括分隔符字符)。本地临时表标识符最多可以包含   116   个字符。   
    
    
  标识符的主体可以包含当前代码页内字母(分隔符本身除外)的任意组合。例如,分隔符标识符可以包含空格、对常规标识符有效的任何字符以及下列任何字符:   代字号   (~)   连字符   (-)     
  惊叹号   (!)   左括号   ({)     
  百分号   (%)   右括号   (})     
  插入号   (^)   撇号   (')     
  and   号   (&)   句号   (.)     
  左圆括号   (()   反斜杠   (\)     
  右圆括号   ())   重音符号   (`)

转载标识符的概念:

数据库名是一个标识符,表名也是一个标识符,在SQL SERVER中标识符分为两类:

标识符有两类:

常规标识符

符合标识符的格式规则。在 Transact-SQL 语句中使用常规标识符时不用将其分隔。

SELECT *FROM TableXWHERE KeyCol = 124

分隔标识符

包含在双引号 (") 或者方括号 ([ ]) 内。符合标识符格式规则的标识符可以分隔,也可以不分隔。

SELECT *FROM [TableX]

 

--Delimiter is optional.WHERE [KeyCol] = 124 --Delimiter is optional.

在 Transact-SQL 语句中,对不符合所有标识符规则的标识符必须进行分隔。

SELECT *FROM [My Table]

 

--Identifier contains a space and uses a reserved keyword.WHERE [order] = 10 --Identifier is a reserved keyword.

常规标识符和分隔标识符包含的字符数必须在 1 到 128 之间。对于本地临时表,标识符最多可以有 116 个字符。

两者重要的区别:常规标识符必须严格遵守命名的规定,而分隔标识符则可以不遵守命名规定,只要用[],""分隔出来就可以。

标识符格式:
  
  1、标识符必须是统一码(Unicode)2.0标准中规定的字符,以及其他一些语言字符。如汉字.
  
  2、标识符后的字符可以是(除条件一)“_”、“@”、“#”、“$”及数字。
  
  3、标识符不允许是Transact-SQL的保留字。
  
  4、标识符内不允许有空格和特殊字符。
  
  另外,某些以特殊符号开头的标识符在SQL SERVER 中具有特定的含义。如以“@”开头的标识符表示这是一个局部变量或是一个函数的参数;以#开头的标识符表示这是一个临时表或是一存储过程。以“##”开头的表示这是一个全局的临时数据库对象。Transact-SQL的全局变量以“@@”开头。标识符最多可以容纳128个字符。

转载于:https://www.cnblogs.com/ndxsdhy/archive/2010/12/02/1894545.html

t-sql中引号的使用规则 转相关推荐

  1. oracle存储过程动态SQL中引号的使用

    写存储过程时,引号是一个永远避不开的祸,如果只是单个引号的话很好用,比如向表中插入数据, 1.直接插(字符型加上引号就行) INSERT INTO DEPT (DEPTNO,DNAME,LOC) VA ...

  2. mysql sql语句 引号_关于sql:何时在MySQL中使用单引号,双引号和反引号

    我正在尝试学习编写查询的最佳方法. 我也理解保持一致的重要性. 到现在为止,我已经随机使用单引号,双引号和反引号而没有任何实际想法. 例: $query = 'INSERT INTO table (i ...

  3. ORACLE 动态SQL中的多个单引号

    今天在项目中遇到动态拼sql的语句, 语句如下: v_sql := 'update Table_Test t ' ||' set t.field1 = ''' || 变量1 || ''','  -- ...

  4. 数据库SQL中的分钟表示应该使用MI(非常重要的一个问题,以前一直认为和java中一样,用mm就可以表示);校对规则(查询时区分大小写)

    java中 之前写java代码的日期表示都是 YYYY-MM-DD HH:mm:SS 其中,MM(一定要大写,代表月份):mm(一定要小写,代表分钟) SQL中 但是在SQL中情况就完全不同了 (原因 ...

  5. 总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法以 及SQL语句中日期格式的表示(#).('') 在Delphi中进行字符变量连接相加时单引号用( ...

  6. SQL查询JSON格式的字段值 JSON_UNQUOTE与JSON_EXTRACT 去除SQL中双引号

    一.最常用的就是 JSON_EXTRACT()函数,用于提取字段值 selectJSON_EXTRACT(a.info,"$.Score")fromjsontest awhereJ ...

  7. (转载)总结一下SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法...

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法 总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中 ...

  8. SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法

    总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的用法总结一下SQL语句中引号(').quotedstr().('').format()在SQL语句中的 ...

  9. sql server中字符集和排序规则到底什么关系

    --SQLSERVER 中的排序规则 服务器>数据库>表列 --------------------------------- 排序规则简介 ----------------------- ...

  10. 总结一下SQL语句中引号()、quotedstr()、()、format()在SQL语句中的用法

    View Code 总结一下SQL语句中引号('').quotedstr().('''').format()在SQL语句中的用法以及SQL语句中日期格式的表示(#).('''')在Delphi中进行字 ...

最新文章

  1. spring boot中@ResponseBody等注解的作用与区别
  2. GMIS 2017 大会陈雨强演讲:机器学习模型,宽与深的大战
  3. 来了,「年度最强技术答辩」看这里
  4. 移动视频-你选择了谁?
  5. python函数的传参要求_python中函数传参详解
  6. 计算机考试报名无法弹出支付界面,教资报名支付页面不弹出怎么办 2021教师资格证报名入口网址...
  7. 科一主观题刷题 0308
  8. git push 和 pull 时 免密执行的方法
  9. leetcode 151 python
  10. 【CSP201312-3】最大的矩形,单调栈
  11. 收到控制台警告:当我在iOS13.2中加载WKWebView时,[Process] kill() returned unexpected error 1
  12. 程序员年薪40万被国企同学怒怼:没啥贡献,工资这么高,凭什么?
  13. h5跳转到 苹果 ios app store 应用商店 的APP详情页面
  14. 欢乐颂之鸿蒙系统,化神前辈传要诀 《镇魔曲》鸿蒙指引全新上线
  15. openssh和openssl下载网址
  16. vue中父元素点击事件与子元素点击事件冲突
  17. 如何配置系统数据库服务器地址,如何配置系统数据库服务器地址
  18. SATA协议OOB随笔
  19. winsty: 我的PhD总结
  20. 【暑期每日一题】洛谷 P7583 [COCI2012-2013#1] DOM

热门文章

  1. eclipse插件开发流程
  2. 循道 | 富达投资的技术控为何摇身变成资管掌门人
  3. 数据治理的坑你遇到过几个?
  4. (转)Rust: Rust的 Deref 运算符
  5. Atom: 安装版本过旧,会导致很多问题
  6. Kafka开源转商业实践,助力车主无忧系统稳健 | 凌云时刻
  7. 经济学家德鲁克的三个故事
  8. 【优化求解】基于matlab遗传算法求解仓库货位优化问题【含Matlab源码 1770期】
  9. 【VRP】基于matlab蚁群算法求解多配送中心的车辆调度问题【含Matlab源码 1098期】
  10. 【杆号识别】基于matlab铁路接触网系统杆号识别【含Matlab源码 1056期】