Запрос SQL Case - PullRequest
       16

Запрос SQL Case

0 голосов
/ 23 ноября 2011

См. Изображение.

У меня есть таблица, полная записей, относящихся к конкретным отделам. Если название отдела хранится в поле «StandardWork», но после слова «Поддержка -», что такое команда SQL для создания нового столбца с именем «Служба», который игнорирует слово «поддержка», пробел и тире и просто использует отдел для право?

enter image description here

Ответы [ 4 ]

2 голосов
/ 23 ноября 2011

Если StandardWork должен существовать рядом с Service, вычисляемый столбец

ALTER TABLE Whatever
   ADD [Service] AS SUBSTRING(StandardWork, 11, 8000);

Если заменить StandardWork, то:

ALTER TABLE Whatever
   ADD [Service] varchar(200) NULL;

UPDATE Whatever SET [Service] = SUBSTRING(StandardWork, 11, 8000);

ALTER TABLE Whatever
   ALTER COLUMN [Service] varchar(200) NOT NULL;

ALTER TABLE Whatever
   DROP COLUMN StandardWork;
2 голосов
/ 23 ноября 2011

Я предпочитаю использовать функцию STUFF для решения этих проблем.

    select stuff(StandardWork, 1, 10, '')

Эта функция удалит символы 1-10 и заменит их пустой строкой.

1 голос
/ 23 ноября 2011

Внутри оператора выбора:

select ...
       case when StandardWork like 'Support - %' 
            then replace(StandardWork, 'Support - ', '')
       end SupportSubCategory
       ...
1 голос
/ 23 ноября 2011

Вы можете использовать заменить

select replace(StandardWork, 'Support - ', '')

или stuff , если у вас есть отделы, в которых Support - является частью имени.

select stuff(StandardWork, 1, 10, '')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...