下面的两个 T-SQL 命令有区别吗?
带引号的列名
SELECT SUM(DATALENGTH('ColumnName')) / 1048576.0 AS ColumnName FROM DatabaseName.Schema.Tablename
不带引号的列名
SELECT SUM(DATALENGTH(ColumnName)) / 1048576.0 AS ColumnName FROM DatabaseName.schema.Tablename
下面的两个 T-SQL 命令有区别吗?
带引号的列名
SELECT SUM(DATALENGTH('ColumnName')) / 1048576.0 AS ColumnName
FROM DatabaseName.Schema.Tablename
不带引号的列名
SELECT SUM(DATALENGTH(ColumnName)) / 1048576.0 AS ColumnName
FROM DatabaseName.schema.Tablename
是的,第一个变量会给你文本的数据长度,
'ColumnName'
而第二个变量很可能会让你更接近你正在寻找的结果(我假设这是给定列中所有数据的总长度)。在 SQL Server 中,如果您正在寻找带引号的标识符,您可以使用标准
"
或方括号。您只需要引用保留关键字的名称,例如TABLE
,INDEX
等等...但作为一般代码样式提示,我建议选择一个引用方案并在您的代码中一致地使用它。它使其他开发人员更容易阅读和获取您的脚本。SQL Server:设置 QUOTED_IDENTIFIER
文本附件使您的函数评估文本“ColumnName”,其中第二个将评估假设 ColumnName 中的值。例如,下面的代码返回两个表名:sysdac_history_internal 和 sysdac_instances_internal,以及您对这两个字符串的计算结果。
总和(数据长度('sysdac_history_internal'))/1048576.0 = 0.000043869
总和(数据长度('sysdac_instances_internal'))/1048576.0 = 0.000047683
而使用引号,查询仍然返回两个结果,带有这两个表的名称,但每个表的计算实际上是基于文本“名称”。
总和(数据长度('名称'))/1048576.0 = 0.000003814