将一种数据类型的表达式显式转换为另一种数据类型。CAST和CONVERT提供了类似的功能。
使用语法转换:
强制转换(表达式为data_type)
使用转换:
CONVERT(数据类型[(长度)],表达式[,样式])
参数表达式
任何有效的Microsoft SQL Server表达式。有关更多信息,请参见表达式。
数据类型
目标系统提供的数据类型,包括bigint和sql_variant。不能使用用户定义的数据类型。有关可用数据类型的更多信息,请参见数据类型。
长度
nchar、nvarchar、char、varchar、binary或varbinary数据类型的可选参数。
风格
日期格式样式,将datetime或smalldatetime数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型);或字符串格式样式,以便将浮点、实数、货币或小额货币数据转换成字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)。
将一种数据类型的表达式显式转换为另一种数据类型。有关可用数据类型的更多信息,请参见数据类型。日期格式样式,将datetime或smalldatetime数据转换为字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型);或字符串格式样式,以便将浮点、实数、货币或小额货币数据转换成字符数据(nchar、nvarchar、char、varchar、nchar或nvarchar数据类型)。转换成字符数据时输出。
隐式转换对用户是不可见的。SQL Server自动将数据从一种数据类型转换为另一种数据类型。例如,如果将一个smallint变量与一个int变量进行比较,则在比较之前,smallint变量会隐式转换为int变量。
显式转换使用CAST或CONVERT函数。castCONVERT函数将数值从一种数据类型(局部变量、列或其他表达式)转换为另一种数据类型。
例如,以下CAST函数将数值$157.27转换为字符串“$ 157.27”:CAST($ 157.27 as varchar(10))CAST函数基于SQL-92标准,优先于CONVERT。
从一个SQL Server对象的数据类型转换到另一个对象的数据类型时,不支持某些隐式和显式数据类型转换。例如,nchar值根本不能转换为图像值。Nchar只能显式转换为二进制,但不支持隐式转换为二进制。Nchar可以显式或隐式转换为nvarchar。
在处理sql_variant数据类型时,SQL Server支持将其他数据类型的对象隐式转换为sql_variant类型。但是,SQL Server不支持从sql_variant数据到其他数据类型的对象的隐式转换。
SELECT CONVERT(CHAR(10),CURRENT_TIMESTAMP,102)
(102表示使用ANSI日期模式,即yy.mm.dd类型)
但是,如果希望将此变量显式生成为datetime或smalldatetime变量,以便在特定的数据库列中兼容,则可以使用以下语句:
选择CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102)作为DATETIME
返回值将是yy.mm.dd 00:00:00(如时间戳为上午12:00;
Function QUOTENAME - Function:返回带分隔符的Unicode字符串,这可以使输入字符串成为有效的MicrosoftSQLServer2005分隔符标识符。-语法Quotename (character _ string [, quote _ character])
-例如:-例如,您有一个名为index的表-您有一个动态查询,表名为declare @ tbnamevarchar(256)set @ TB name= index -检查此表中的数据:print( select * from @ TB name)exec( select * from )
-所以打印出来的数据是select*fromindex
——因为index是关键词,所以肯定是错的。只需添加括号:select*from[index]
-这将给出QUOTENAME,即:print( select * from quote name(@ TB name))-result:select * from[index]exec( select * from quote name(@ TB name))
3 EXEC AT,这是05中的新语法。在远程主机上执行动态SQL语句。
加n表示存储在数据库中时以Unicode格式存储。Nstring 表示字符串是Unicode字符串。Unicode字符串在格式上类似于普通字符串,但它前面有一个N标识符(N代表SQL-92标准中的国家语言)。n前缀必须是大写字母。例如,“Michl”是一个字符串常量,N“michl”是一个Unicode常量。Unicode常量被解释为Unicode数据,并且不使用代码页进行计算。Unicode常量确实有排序规则,主要用于控制比较和区分大小写。为Unicode常量指定当前数据库的默认排序规则,除非使用COLLATE子句为它们指定了排序规则。Unicode数据中的每个字符存储在两个字节中,而字符数据中的每个字符存储在一个字节中。有关更多信息,请参见使用Unicode数据。
Unicode常量支持增强的排序规则。
EXEC命令有两个用法:执行一个存储过程,或者执行一个动态批次。批次是一个内容为SQL语句的字符串。
数据库名是一个标识符,表名也是一个标识符,在SQL SERVER中标识符分为两类:
标识符有两类:
符合标识符的格式规则。在Transact-SQL语句中使用常规标识符时,不需要将它们分开。SELECT * FROM TableXWHERE其中KeyCol=124
常规标识符
用双引号()或方括号([])括起来。符合标识符格式规则的标识符可以被分离,也可以不被分离。SELECT *FROM [TableX] -分隔符是可选的。其中[KeyCol]=124 -分隔符是可选的。
在Transact-SQL语句中,不符合所有标识符规则的标识符必须分开。SELECT *FROM [My Table] -标识符包含一个空格并使用保留关键字。其中[order]=10 -标识符是保留关键字。
常规标识符和分隔标识符必须包含1到128个字符。对于本地临时表,标识符最多可以有116个字符。
分隔标识符
标识符的格式:1。标识符必须是Unicode 2.0标准中指定的字符,以及一些其他语言字符。比如汉字。2.标识符后面的字符可以是(条件1除外)" _ "、" @ "、" # "、$ "和数字。3.不允许将标识符作为Transact-SQL的保留字。4.标识符中不允许有空格和特殊字符。此外,一些以特殊符号开头的标识符在SQL SERVER中具有特定的含义。
像“@”这样的标识符表示这是一个局部变量或函数的参数;以#开头的标识符表示这是一个临时表或存储过程。
“# #”表示这是一个全局临时数据库对象。T
transact-SQL的全局变量以“@ @”开头。
该标识符最多可以包含128个字符。