当前位置:首页 » 编程语言 » sqlserver标识符
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlserver标识符

发布时间: 2023-03-05 17:18:39

sql server中,N''表示什么意思

加上 N 代表存入数据库时以 Unicode 格式存储

N'string' 表示string是个Unicode字符串

Unicode 字符串的格式与普通字符串相似,但它前面有一个 N 标识符(N 代表 SQL-92 标准中的国际语言 (National Language))。N 前缀必须是大写字母。例如,'Michél' 是字符串常量而 N'Michél' 则是 Unicode 常量。Unicode 常量被解释为 Unicode 数据,并且不使用代码页进行计算。Unicode 常量确实有排序规则,主要用于控制比较和区分大小写。

Unicode字符串常量支持增强的排序规则。

(1)sqlserver标识符扩展阅读:

Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。目前的Unicode字符分为17组编排,0x0000 至 0x10FFFF,每组称为平面(Plane),而每平面拥有65536个码位,共1114112个。然而目前只用了少数平面。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。

通用字符集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。UCS-2用两个字节编码,UCS-4用4个字节编码。

历史上存在两个独立的尝试创立单一字符集的组织,即国际标准化组织(ISO)和多语言软件制造商组成的统一码联盟。前者开发的 ISO/IEC 10646 项目,后者开发的统一码项目。因此最初制定了不同的标准。

㈡ sqlserver多表查询,根据动态获取的where条件

Select 字段a from 表1 where ‘获取的值’ like 字段a
union
Select 字段b from 表2 where ‘获取的值’ like 字段b

㈢ sql server的对象命名规则是什么

自己搜索一下就是了,我给你一段:

为了提供完善的数据库管理机制,SQL Server 设计了严格的命名规则。在创建或引用数据库实体,如表、索引、约束等时,必须遵守SQL Server 的命名规则,否则有可能发生一些难以预料和检查的错误。
本文将讲述:标识符的分类和格式规定;数据库对象的命名规定与使用原则。希望对您会有所帮助。
标识符分类
SQL Server的所有对象,包括服务器、数据库以及数据库对象,如表、视图、列、索引、触发器、存储过程、规则、默认值和约束等都可以有一个标识符。对绝大多数对象来说,标识符是必不可少的,但对某些对象如约束来说,是否规定标识符是可选的。对象的标识符一般在创建对象时定义,作为引用对象的工具使用。
例如下面的SQL语句:
Create table student
(
id int primary key,
name varchar(20)
)
这个例子创建了一个表格,表格的名字是一个标识符:student;表格中定义了两列,列的名字分别是id,name,他们都是合法的标识符。这个例子还定义另外一个未命名的主键约束。
SQL Server一共定义了两种类型的标识符:规则标识符(Regular identifier)和界定标识符(Delimited identifier)。
规则标识符
规则标识符严格遵守标识符有关格式的规定。所以在T-SQL语句中凡是规则标识符都不必使用界定符,如[]和‘’,来进行界定。
如上述例子中使用的表名student 就是一个规则标识符,在student上不必添加界定符。
界定标识符
界定标识符是那些使用了如[]和‘’等界定符号来进行位置限定的标识符,使用了界定标识符,既可以遵守标识符命名规则,也可以不遵守标识符命名规则。
Select * from [student] 是要从student 表格中查询出所有的数据与
Select * from student 等效。
为什么呢?因为在“[]”中的标识符遵守标识符命名规则,“[]”被忽略不计。
但如果是不遵守标识符命名规则的标识符,那么在T-SQL语句中必须使用界定符号加以限定,如:
Select * from [my table]
Where [order]=10
在这个例子中,必须使用界定标识符,因为在from子句中的标识符my talbe中含有空格,而where子句中的标识符order 是系统保留字(在查询分析器里“order”变蓝色)。这两个标识符都不遵守标识符命名规则,必须使用界定符,否则无法通过代码编译。
标识符格式
标识符格式的规定,其具体内容如下:
标识符的首字母必须是以下两种情况之一:
所有在统一码(Unicode)2.0标准规定的字符,包括26个英文字母a-z和A-Z,以及其他一些语言字符,如汉字。例如可以给一个表格命名为“学生基本情况”。下划线“-”、“@”或“#”。
标识符首字母后的字符可以是:
所有在统一码(Unicode)2.0标准规定的字符,包括26个英文字母a-z和A-Z,以及其他一些语言字符,如汉字。下划线“-”、“@”、“$”或“#”。
0,1,2,3,4,5,6,7,8,9。
标识符不允许是T-SQL的保留字。
由于T-SQL不区分大小写,所以无论是保留字的大写还是小写都不允许使用。
标识符内部不允许有空格或特殊字符。
Select * from stu[de]nt –编译器将返回错误信息。因为在标识符stu[de]nt中包含了特殊字符“[”和“]”,所以在编译上述语句时出错。
?
以某些特殊符号开头的标识符在SQL Server系统中具有特定的含义。如“@”开头的标识符表示这是一个局部变量或是一个函数的参数;以“#”开头的标识符表示这是一个临时表或存储过程;一个以“##”开头的标识符表示这是一个全局的临时数据库对象。T-SQL的全局变量以标志“@@”开头。为避免同这些全局变量混淆,建议不要使用“@@”作为标识符的开始。
无论是界定标识符还是规则标识符都最多只能容纳128个字符,对于本地的临时表最多可以有116个字符。
对象命名规则
SQL Server 2000 的数据库对象名字由1-128个字符组成,不区分大小写。在一个数据库中创建了一个数据库对象后,数据库对象的全名应该由服务器名、数据库名、拥有者名和对象名这四个部分组成,格式如下:
[[[server.][database].][owner_name].]object_name 命名必须都要符合标识符的规定。
在实际引用对象时,可以省略其中某部分的名称,只留下空白的位置。
实例的命名习惯
在SQL Server 2000中默认实例的名字采用计算机名,实例的名字一般由计算机名字和实例名字两部分组成。
总之,正确掌握数据库的命名和引用方式是用好SQL Server 2000的前提,也有助于用户理解SQL Server 2000中的其他内容。

㈣ SQLServer中的“SET ANSI_NULLS ON”和“SET QUOTED_IDENTIFIER ON”有什么实际的用处

这些是 SQL-92 设置语句,使 SQL Server 2000/2005 遵从 SQL-92 规则。
当 SET QUOTED_IDENTIFIER 为 ON 时,标识符可以由双引号分隔,而文字必须由单引号分隔。当 SET QUOTED_IDENTIFIER 为 OFF 时,标识符不可加引号,且必须符合所有 Transact-SQL 标识符规则。
SQL-92 标准要求在对空值进行等于 (=) 或不等于 (<>) 比较时取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍会返回零行。
当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有不为 XYZ_value 也不为 NULL 的行。

㈤ SqlServer怎么能让identity标识符在删除记录空缺后自动重排

这个好像不能实现吧。自动增长列不会重新改变的。 你可以使用row_number来将它排序,不知道这样能否满足你的需求。如果你非要使用标识列,我提供两种方法可以做到,一:是将表整个表复制(除了标识列),重新加一个标识列。二:写一个触发器将后面的行移动上来但是两种效果都不是很好。

㈥ SQL中如何截取标识符前、标识符中间、标识符后的字段

几个概念:
A、标识符:是数据库对象的名称。
数据库对象的名称被看成是该对象的标识符。Microsoft® SQL Server™ 中的每一内容都可带有标识符。服务器、数据库和数据库对象(例如表、视图、列、索引、触发器、过程、约束、规则等)都有标识符。大多数对象要求带有标识符,但对有些对象(如约束)标识符是可选项。
B、保留关键字:是sql语言的语法。属于代码的范畴。
保留关键字是用来定义、操作和访问数据库。保留关键字是 SQL Server 使用的 Transact-SQL 语言语法的一部分,用于分析和理解 Transact-SQL 语句和批处理。尽管在 Transact-SQL 脚本中,使用 SQL Server 保留关键字作为标识符和对象名在语法上是可行的,但规定只能使用分隔标识符。
C、字符串:数据类型的一种,数据类型有整数型、字符串型等。属于数据的范畴。
每个列、局部变量、表达式和参数都有一个相关的数据类型。即属于某种数据类型。
D、通配符、转义符:这2个是跟字符串相关的概念。一般出现在字符串中。
比如 like ’dsd%‘ , dsd% 是字符串。%是通配符。这个语句的含义大家应该都知道,^_^。
使用转义符,可以把通配符改变成普通字符。2种方法:
1、[]是默认的转义符,里面的通配符(里面只能是通配符),都当做普通字符处理:
like ’dsd[%]‘,这时,%就是个普通字符了,查找条件就是要某个字段值完全等于 dsd% 。
2、用ESCAPE关键字定义转义符,
like ’dsd/%‘ ESCAPE ’/' 效果同 like ’dsd[%]‘
还有一种转义符情况:
大家知道,单引号一般可用来包含字符串,如果字符串中有单引号是普通字符,那么就同时有了2种意思的单引号,怎么区分呢?就要用2个单引号来转义为普通字符,如 like ‘ds''d’ ,其实就是指字符串:ds'd
后面提到的QUOTENAME函数,默认是用[]来做分隔符,如果字符串中有[],函数转换后,字符串中的[]就要用两个]]来转义,表明这个[]是个普通字符,与字符串前后的分隔符 [] 相区别。
步入正题,
标识符,分为:
一、常规标识符:符合常规标识符规则的标识符。
常规标识符规则如下:(参考sqlserver的联机帮助)
1、。。。。。
2、。。。。。
3、。。。。。
4、。。。。。
二、分隔标识符:包含在双引号 " 或者方括号 [ ] 内的标识符就是分隔标识符。
注意:双引号 " 或者方括号 [ ] 是分隔符。
在 Transact-SQL 语句中,对不符合常规标识符规则的标识符必须用双引号或方括号来分隔。符合标识符格式规则的标识符可以分隔,也可以不分隔。
1、当QUOTED_IDENTIFIER 为 ON 时,默认是on的。 SQL Server 遵循 SQL-92 规则:
双引号只能用于分隔标识符,不能用于分隔字符串。
为保持与现有应用程序的兼容性,SQL Server 并不完全强制该规则。如果字符串没有超过标识符的长度,则该字符串可包含在双引号内。但不建议这样做。
单引号必须用来包含字符串,不能用于分隔标识符。
如果字符串包含单引号,则需要在单引号前再增加一个单引号:
SELECT * FROM "My Table"
WHERE "Last Name" = 'O''Brien'
注意:"Last Name",你可以写成'Last Name'而不会报语法错误,是因为,sql认为是进行字符串的比较了,比如写成'Last Name'='Last Name',比较结果为真,表中的全部记录就被select出来了。而如果写成:WHERE "Last Name" = "O''Brien",即等号右边改成双引号,则会把O''Brien当成一个标识符(数据库对象),即当成一个字段名,运行时,会提示没有O''Brien列。 2、当 QUOTED_IDENTIFIER 为 OFF 时,对于双引号和单引号的使用,SQL Server 遵循如下规则:
引号不能用于分隔标识符,而是用括号作为分隔符。
单引号或双引号可用于包含字符串。
如果使用双引号,嵌入的单引号不需要用两个单引号来表示:
SELECT * FROM [My Table]
WHERE [Last Name] = "O'Brien"
常规标识符和分隔标识符包含的字符数必须在 1 到 128 之间

另外:
将标识符用作参数:(具体请参考联机帮助)
许多系统存储过程、函数和 DBCC 语句都把对象名当作参数。其中一些参数接受多部分对象名,另一些则只接受单部分名称。接受单部分对象名称还是多部分对象名称决定了 SQL Server 在内部如何分析和使用参数。 。。。。。。。
另外:
QUOTENAME函数:
msdn解释:返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效的 Microsoft® SQL Server™ 分隔标识符。
以下示例接受字符串 abc[]def 并使用 [ 和 ] 字符来创建有效的 SQL Server 分隔标识符:
SELECT QUOTENAME('abc[]def')
下面是结果集:
[abc[]]def]
(1 row(s) affected)
注意,字符串"abc[]def"中的右括号有两个,用于表示转义符,转换成普通字符,与分隔符 [] 相区别。
解释:字符串 abc[]def 中的[]是当做普通字符,所以用 ] ] 来表示 ] 是个普通字符,即表明中间的 [] 就是个普通字符。
如果是:SELECT QUOTENAME('abc[]def' , '()' ) ,不用[]来做分隔符,那么结果是:
(abc[]def) ,就不用两个]] 来转义了,因为新的字符串中只有一种意思的[],即普通字符。
这是个通用的规则,比如字符串中含有单引号 ' 为普通字符串时,比如 :ds'd ,
like 语句就要改成:like ‘ds‘’d’,而不是: like 'ds'd' 。即2个单引号表示转义符,转换成普通单引号字符 ' 。