sql-server-2008 - charindex时的SQL Server案例

标签 sql-server-2008 syntax-error case

我正在尝试在SQL Server 2008 R2中运行语句时得到这种情况。它一直说'>'符号在CHARINDEX部分的语句时无效。

select 
   count(r.id) as request, 
   case r.servicelayer
      when null then r.topic + '/IAL'
      when '' then r.topic + '/IAL'
      when CHARINDEX('/rssfeed1234/georss/SomMobile', i.URI_STEM) ***>*** 0 then 'Som Mobile'
      else r.topic + '/' + r.servicelayer
    end as [layername]
from iis_metrics.tblReportData as r

最佳答案

好吧,您正在以无效的方式混合使用CASE的两种不同方式。

要么使用CASE (some column name),然后必须仅使用将应用于该列的某种条件。这在前两个子句中是可以的:WHEN NULLWHEN ''(这是使用WHEN .. IS NULLWHEN ... = ''的“简写”-但是,如果您开始使用此“简写”表示法,则需要在中使用它,所有 WHEN子句)

但是在这种情况下,就像您在第三个子句中尝试的那样,您不能在您的WHEN....子句中突然使具有完整的表达式。

这是版本:您也可以只使用CASE,然后每个WHEN子句都有一个完整的表达式-尝试以下操作:

CASE 
  WHEN r.servicelayer IS NULL THEN r.topic + '/IAL'
  WHEN r.servicelayer = '' THEN r.topic + '/IAL'
  WHEN CHARINDEX('/rssfeed1234/georss/SomMobile', i.URI_STEM) > 0 THEN 'Som Mobile'
  ELSE r.topic + '/' + r.servicelayer
END AS [layername]

现在应该可以使用-您的每个WHEN子句都包含一个完整表达式,因此该CASE语句有效。

关于sql-server-2008 - charindex时的SQL Server案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22486931/

相关文章:

sql - 总数计算

sql - 基于另一个行字段值更新字段

MySQL JOIN 三个表使用一个表的行值

mysql - 带有聚合函数的 SELECT CASE

mysql - 学习 SQL Server 2008 和存储过程

json - Uncaught SyntaxError : Unexpected token : in JSON response

javascript - 将变量作为 URL 参数传递到 xmlHTTPRequest

syntax-error - OmniComplete和Vim问题

sql - Mysql SELECT CASE WHEN 某事然后返回字段

php - 我从 PHP 使用 ODBC 并连接到 Microsoft SQL Server 2008R2 实例时收到 "String data, right truncation"错误