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
vsCONVERT
它们只能“正常工作”,因为您没有对任何大于30个字符的字符串进行比较。你看到了吗?你能举一个例子,说明CAST
保留了CONVERT
不保留的小数位吗?
convert ( datetime , get date () , **format**)