簡體   English   中英

SQL-如何從另一個表中選擇列別名?

[英]SQL - How to select a column alias from another table?

我在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

這是保存別名(文本)的表:

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

我相信您將需要使用動態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)
);

SqlFiddle在這里

關於動態Sql的警告(很多)之一是,您需要確保別名數據已針對Sql Injectin攻擊進行了驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM