sql cast,convert,QUOTENAME,exec 函数学习记录

sql cast,convert,QUOTENAME,exec 函数学习记录

将一种数据类型的表达式显式转换为另一种数据类型。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个字符。

sql cast,convert,QUOTENAME,exec 函数学习记录