MSSQL案例陈述

cyb*_*er1 2 sql t-sql sql-server

我想创建一个只显示其中包含%的值的视图.

我试过跟随

 Alter VIEW [dbo].[history] as

    select 

    [objid]
          ,[interval]
          ,[value_channel]
          ,[value_channelid]
          ,case when [value_text] like '[%]' then right([value text],2)
          ,[value_raw_text]
          ,[coverage_raw]

    from .....
Run Code Online (Sandbox Code Playgroud)

但我在","附近收到错误语法错误.

任何的想法?

Zoh*_*led 5

您的alter view语句中缺少两些内容:

一个是end后面的case,另一个是列的别名.

Alter VIEW [dbo].[history] as

select 

[objid]
      ,[interval]
      ,[value_channel]
      ,[value_channelid]
      ,case when [value_text] like '[%]' then right([value_text],2) end as value_text
      ,[value_raw_text]
      ,[coverage_raw]

from .....
Run Code Online (Sandbox Code Playgroud)

您可能还想elsecase表达式中添加一个,否则只会null在条件不匹配时返回:

Alter VIEW [dbo].[history] as

select 

[objid]
      ,[interval]
      ,[value_channel]
      ,[value_channelid]
      ,case when [value_text] like '[%]' then right([value_text],2) else [value_text] end as value_text
      ,[value_raw_text]
      ,[coverage_raw]

from .....
Run Code Online (Sandbox Code Playgroud)