簡體   English   中英

為列值設置別名

[英]Set alias for column values

是否可以像我們在sql server中為列標題設置的那樣為列值設置別名。

或者,如果還有其他方法可以將我的列值轉換為客戶端可讀的格式。

我具有以下系統生成的值:

BILL_DETAILS
BILLING_MENU
ComplaintNumberInput
CUSTOMER_ACCOUNT_NUMBER_INPUT
DEFAULTER
FAULTS_SHUTDOWN_MENU
KUNDA_CONNECTION
LOAD_SHEDDING_MENU
LOAD_SHEDDING_SCHEDULED
loadSheddingScheduleReplayer
loadSheddingStatus
loadSheddingStatusReplayer
MENU_CONTEXT_EVAL
POWER_COMPLAINTS_MENU
repaetComplaintStatus

是否可以在以下更改它們:

BILL DETAILS
BILLING MENU
COMPLAINT NUMBER INPUT
CUSTOMER ACCOUNT NUMBER INPUT
DEFAULTER
FAULTS SHUTDOWN MENU
KUNDA CONNECTION
LOAD SHEDDING MENU
LOAD SHEDDING SCHEDULED
LOAD SHEDDING SCHEDULE REPLAYER
LOAD SHEDDING STATUS
LOAD SHEDDING STATUS REPLAYER
MENU CONTEXT EVAL
POWER COMPLAINTS MENU
REPEAT COMPLAINT STATUS

在sql中,別名是數據庫對象的另一個名稱。 值不屬於此類別,因此無法為它們加上別名。 但是,盡管格式化通常最好在表示層而不是數據層中進行,但是您可以格式化查詢的輸出。

話雖如此,對於您的問題有一個t-sql解決方案:

SELECT REPLACE(ColumnName, '_', ' ') As ColumnName
FROM TableName

這會將所有下划線轉換為空格。

要處理其他格式,您也可以感謝Jeff Moden解決了該問題( 請參閱此鏈接 )。

SELECT COALESCE(STUFF(ColumnName, NULLIF(patindex('%[a-z][A-Z]%', ColumnName COLLATE Latin1_General_BIN), 0) + 1, 0, ' '), Col) AS ColumnName
FROM TableName

因此,結合這兩種解決方案,您最終的sql應該是這樣的:

SELECT REPLACE(COALESCE(STUFF(ColumnName, NULLIF(patindex('%[a-z][A-Z]%', ColumnName COLLATE Latin1_General_BIN), 0) + 1, 0, ' '), ColumnName), '_', ' ') AS ColumnName
FROM TableName

這樣,您可以在純t-sql中處理這兩種格式,而不必在每次向表中添加新值時都更改查詢。

這是一個帶有您發布的值的測試案例:

DECLARE @t TABLE (Col VARCHAR(40))

INSERT INTO @t VALUES
('BILL_DETAILS'),
('BILLING_MENU'),
('ComplaintNumberInput'),
('CUSTOMER_ACCOUNT_NUMBER_INPUT'),
('DEFAULTER'),
('FAULTS_SHUTDOWN_MENU'),
('KUNDA_CONNECTION'),
('LOAD_SHEDDING_MENU'),
('LOAD_SHEDDING_SCHEDULED'),
('loadSheddingScheduleReplayer'),
('loadSheddingStatus'),
('loadSheddingStatusReplayer'),
('MENU_CONTEXT_EVAL'),
('POWER_COMPLAINTS_MENU'),
('repaetComplaintStatus')

SELECT Col
       ,UPPER(REPLACE(COALESCE(STUFF(col, NULLIF(patindex('%[a-z][A-Z]%', Col COLLATE Latin1_General_BIN), 0) + 1, 0, ' '), Col), '_', ' ')) AS NewCol
FROM @t

結果:

Col                                      NewCol

BILL_DETAILS                             BILL DETAILS
BILLING_MENU                             BILLING MENU
ComplaintNumberInput                     COMPLAINT NUMBERINPUT
CUSTOMER_ACCOUNT_NUMBER_INPUT            CUSTOMER ACCOUNT NUMBER INPUT
DEFAULTER                                DEFAULTER
FAULTS_SHUTDOWN_MENU                     FAULTS SHUTDOWN MENU
KUNDA_CONNECTION                         KUNDA CONNECTION
LOAD_SHEDDING_MENU                       LOAD SHEDDING MENU
LOAD_SHEDDING_SCHEDULED                  LOAD SHEDDING SCHEDULED
loadSheddingScheduleReplayer             LOAD SHEDDINGSCHEDULEREPLAYER
loadSheddingStatus                       LOAD SHEDDINGSTATUS
loadSheddingStatusReplayer               LOAD SHEDDINGSTATUSREPLAYER
MENU_CONTEXT_EVAL                        MENU CONTEXT EVAL
POWER_COMPLAINTS_MENU                    POWER COMPLAINTS MENU
repaetComplaintStatus                    REPAET COMPLAINTSTATUS

每個值的用例語句,例如:

case old_column_name
     when 'LOAD_SHEDDING_MENU'
     then 'LOAD SHEDDING MENU'
     when 'loadSheddingScheduleReplayer'
     then 'LOAD SHEDDING SCHEDULE REPLAYER'
     when ...........
     then ...........
end as column_name

暫無
暫無

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

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