使用MS SQL Server函数作为列别名

时间:2012-07-23 11:45:13

标签: sql winforms sql-server-2005

我已经创建了一个函数,用于检索MS SQL Server 2005中数据库列的翻译,具体取决于所选的语言代码(例如'el-GR')。函数本身可以正常工作,但我无法将其结果用作检索列的别名。

这是我正在使用的代码:

SELECT
    tblAuditors.[Full Name] as dbo.GetLocalizedGridTranslation('Auditor Name', @languageCode)
FROM tblCompanyAuditors

有谁知道如何欺骗SQL Server允许我将该函数用作别名?

2 个答案:

答案 0 :(得分:2)

用括号[]包裹别名:

SELECT 
   [dbo.GetLocalizedGridTranslation('Auditor Name', @languageCode)] = tblAuditors.[Full Name]
FROM tblAuditors

除此之外,您是否查询过表tblCompanyAuditors这是一个错字,但该列是来自表tblAuditors

编辑:我刚才注意到列别名本身应该是函数的结果。

这有意义吗?别名是所有记录的列,并且将在每条记录上执行一个函数。如果这是一个存储过程,我建议将结果存储在变量中,并将其用作动态sql中的列别名。

DECLARE @column_alias VARCHAR(30)
SET @column_alias = dbo.GetLocalizedGridTranslation('Auditor Name', @languageCode);

-- Use dynamic SQL
DECLARE @sql VARCHAR(1000)
SET @sql = 'SELECT tblAuditors.[Full Name] AS ' + @column_alias + ' FROM tblAuditors'

EXEC sp_executesql @sql

答案 1 :(得分:1)

我认为您将需要使用动态SQL

 declare @sql nvarchar(max)
 select @sql = 'SELECT tblAuditors.[Full Name] as ['
      + dbo.GetLocalizedGridTranslation('Auditor Name', @languageCode) 
      + '] FROM tblCompanyAuditors'

 exec sp_executesql @sql