SQL Case语句查询

时间:2011-11-23 11:35:03

标签: sql sql-server syntax reporting-services case-statement

见图。

我有一张桌子,上面写着与特定部门有关的记录。如果部门名称保存在“StandardWork”字段下但在“支持 - ”之后,那么创建名为Service的新列的SQL命令是什么,它将忽略单词support,空格和破折号,只需使用部门即可正确的?

enter image description here

4 个答案:

答案 0 :(得分:2)

如果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;

答案 1 :(得分:2)

我更喜欢使用STUFF函数来解决这些问题。

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

此函数将删除字符1-10并将其替换为空字符串。

答案 2 :(得分:1)

您可以使用replace

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

stuff如果您的部门名称中包含Support -

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

答案 3 :(得分:1)

在select语句中:

select ...
       case when StandardWork like 'Support - %' 
            then replace(StandardWork, 'Support - ', '')
       end SupportSubCategory
       ...