2016-03-02 4 views
0

Возможно ли установить псевдоним для значений столбцов, поскольку мы настроены для заголовка столбца на сервере sql.Установить псевдоним для значений столбца

Или, если есть какой-либо другой способ преобразования значений столбца в читаемый формат для клиентов.

У меня есть следующие системы сгенерированные значения:

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 
+0

Вы можете создать вид. –

+0

Почему вы не используете регулярное выражение в своем коде приложения, а изменение в базе данных делает все ваши _ в пространстве вашего кода приложения. –

+0

Дорогой это значения, генерируемые сервером IVR (Interactive Voice Response). У меня есть доступ к таблице базы данных, называемой «Menu_Utilization» и «Имя столбца», имя MenuName, и это имена меню. – BilalAhmed

ответ

1

В sql псевдоним - это другое имя для объекта базы данных. Значения не подпадают под эту категорию, поэтому невозможно их псевдонизировать. Вы можете, однако, форматировать вывод своего запроса, хотя форматирование обычно лучше всего делать на уровне презентации, а не в слое данных.

Сказав, что существует T-SQL решение для Вашего вопроса:

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

Это будет конвертировать все подчеркивает пространства.

Для обработки другого формата вы также можете поблагодарить Джеффа Модена за решение этой проблемы (see this link).

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

Так комбинируя 2 решения окончательный 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 

Таким образом, вы можете обрабатывать эти 2 форматы в чистом 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 
+0

Удивительно (Y) – BilalAhmed

+0

@BilalAhmed: Нет, у меня просто есть опыт, и я просто хорош в поиске. Я знаю свой путь вокруг сервера sql, но я не согласен с такими большими пушками, как moden, bertrand и т. Д. В любом случае, я рад, что смогу помочь. –

+0

Уважаемый @ Zohar Peled: Пожалуйста, помогите http://stackoverflow.com/questions/35773590/sql-sub-query-self-join – BilalAhmed

0

Использование конкретных заявлений для каждого значения, как:

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 
+0

отрицательные избиратели ... любая причина? – user2407394

+0

Извините, я не голосовал за это как отрицательный. Но насколько я знаю, Case, когда выберет только одно значение, которое истинно для конкретного значения. – BilalAhmed

+0

Нет, у вас может быть несколько, когда ... тогда в случае утверждений .. – user2407394

Смежные вопросы