我在SQL中有一个包含数据的表,另一个表包含该列的别名。它用于翻译目的。
我想知道如何对这些列进行选择但是从另一个表中检索别名?
这是包含实际列名称的表:
ID PageID ColName Order Type Width IsDeleted
1 7 CustType 2 NULL NULL 0
2 7 Description 3 NULL NULL 0
3 7 ApplyVAT 4 NULL NULL 0
4 7 ProduceInvoices 5 NULL NULL 0
5 7 PurchaseSale 6 NULL NULL 0
6 7 TermsDays 7 NULL NULL 0
7 7 DateTimeLastUpdated 8 NULL NULL 0
这是包含别名(text)的表:
ID ColID UserID Text Order Enabled?
50 22 1 id 1 1
51 1 1 CustTypes 2 1
52 2 1 Description 3 1
53 3 1 ApplyVAT NULL 0
54 4 1 ProduceInvoices NULL 0
55 5 1 PurchaseSale NULL 0
56 6 1 TermsDays NULL 0
57 7 1 DateTimeLastUpdated NULL 0
答案 0 :(得分:1)
我相信您需要使用动态SQL来执行此操作,例如:
DECLARE @Sql NVARCHAR(MAX);
SELECT TOP 1 @Sql = 'SELECT dt.ID as ' + at.IDAlias + ', dt.Town as ' + at.TownAlias
+ ' FROM DataTable dt'
FROM AliasTable at
WHERE at.LanguageID = 2;
EXEC(@Sql)
给出数据表的例子
CREATE TABLE DataTable
(
ID INT,
Town NVARCHAR(50)
);
一个表格,其中包含上述列中与语言相关的别名:
CREATE TABLE AliasTable
(
LanguageId INT,
IDAlias NVARCHAR(100),
TownAlias NVARCHAR(100)
);
动态Sql的一个(很多)注意事项是你需要确保别名数据针对Sql Injectin攻击进行验证。