Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在Select语句中使用Convert和Cast有什么区别_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server 在Select语句中使用Convert和Cast有什么区别

Sql server 在Select语句中使用Convert和Cast有什么区别,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我在这里提出了一个问题 我得到了两个回复,其中一个说要使用 SELECT DISTINCT CONVERT(VARCHAR(MAX), Subjects) FROM T1 另一个是说使用 select distinct cast(Subjects as varchar) from T1 我两个都试过了,效果都很好。我想知道两者有什么不同 谢谢 不,性能不是问题。(就您的问题所述,两者都可以使用,并且它们之间没有区别,但正如martin所说的使用CAST的语句将按默认长度转换为varchar

我在这里提出了一个问题

我得到了两个回复,其中一个说要使用

SELECT DISTINCT CONVERT(VARCHAR(MAX), Subjects) FROM T1
另一个是说使用

select distinct cast(Subjects as varchar) from T1
我两个都试过了,效果都很好。我想知道两者有什么不同


谢谢

不,性能不是问题。(就您的问题所述,两者都可以使用,并且它们之间没有区别,但正如
martin
所说的使用
CAST
的语句将按默认长度转换为varchar(30)

CONVERT
特定于SQL Server,在日期和时间值、小数和货币符号之间进行转换时,允许更大范围的灵活性

试试这个

SELECT DISTINCT CONVERT(VARCHAR(MAX), GETDATE(),108)
--and the other is saying to use

select distinct cast(GETDATE() as VARCHAR(MAX))

性能方面,没有区别。 只是CAST是ANSI-SQL(符合标准),因此查询可以在服务器技术之间移植

Convert特定于sql server,但提供了一组更丰富的转换选项

建议使用cast以便于移植,除非您不得不这样做

国王问候,
Sumit

在日期和时间值、小数和货币符号之间转换时更灵活。 CAST是更符合ANSI标准的

这意味着,当cast格式设置为标准u时,可以在转换中使用许多格式 比如说

convert ( datetime , get date () , **format**)
在格式u中可以输入格式的编号

101年月日/年

102 yyyy.mm.dd ANSI日期和世纪

103年月日

104年月日

你可以在谷歌上搜索更多的格式


不存在性能差异或任何其他方面

第二个方面转换为
varchar(30)
,而不是
max
,但这只是因为没有指定长度。不是因为
CAST
vs
CONVERT
它们只能“正常工作”,因为您没有对任何大于30个字符的字符串进行比较。你看到了吗?你能举一个例子,说明
CAST
保留了
CONVERT
不保留的小数位吗?
convert ( datetime , get date () , **format**)