首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >oracle sql -带有多个"case when“和check for contains文本的select语句

oracle sql -带有多个"case when“和check for contains文本的select语句
EN

Stack Overflow用户
提问于 2016-07-11 15:08:18
回答 4查看 86.8K关注 0票数 8

我寻找了一个工作示例,在该示例中,我可以使用mutliple case statment wihch来验证是否包含特定的文本:例如

代码语言:javascript
运行
复制
SELECT 
  ID,
  NAME,
  (SELECT 
      (Case when Contains(Descr,"Test") Then "contains Test" 
        when Contains(Descr, "Other") Then "contains Other"
        Else "No Match" End) From DESCRIPTION
       where item_id = id
  ) as "Match"
  From Item
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-07-11 16:30:01

在Oracle中,字符串文字需要用单引号括起来。

要查找匹配的子字符串,您可以使用LIKE

代码语言:javascript
运行
复制
SELECT  ID,
        NAME,
        CASE WHEN Descr LIKE '%Test%'  THEN 'Contains Test'
             WHEN Descr LIKE '%Other%' THEN 'Contains Other'
             ELSE 'No Match'
        END AS Match
FROM    Item i
        LEFT OUTER JOIN
        Description d
        ON i.id = d.item_id

INSTR()

代码语言:javascript
运行
复制
SELECT  ID,
        NAME,
        CASE WHEN INSTR( Descr, 'Test' ) > 0  THEN 'Contains Test'
             WHEN INSTR( Descr, 'Other' ) > 0 THEN 'Contains Other'
             ELSE 'No Match'
        END AS Match
FROM    Item i
        LEFT OUTER JOIN
        Description d
        ON i.id = d.item_id

REGEXP_LIKE()

代码语言:javascript
运行
复制
SELECT  ID,
        NAME,
        CASE WHEN REGEXP_LIKE( Descr, 'Test' )  THEN 'Contains Test'
             WHEN REGEXP_LIKE( Descr, 'Other' ) THEN 'Contains Other'
             ELSE 'No Match'
        END AS Match
FROM    Item i
        LEFT OUTER JOIN
        Description d
        ON i.id = d.item_id
票数 23
EN

Stack Overflow用户

发布于 2016-07-11 15:27:58

你可能需要这样的东西:

代码语言:javascript
运行
复制
with Item(id, name, descr) as
(
 select 'id1', 'name1', 'description containing Test' from dual union all
 select 'id2', 'name2', 'description containing Others' from dual union all
 select 'id3', 'name3', 'description containing nothing interesting' from dual
)
SELECT 
    ID,
    NAME,
    descr,
    case
        when instr(Descr, 'Test') != 0 then 'contains Test' 
        when instr(Descr, 'Other')!= 0 then 'contains Other'
        Else 'No Match'
    End as "Match"
From Item

使用INSTR只是可能的解决方案之一;您可以使用LIKEregular expressions等以及不同的方式来编写相同的查询;我相信这已经足够简单,不言而喻了。

票数 1
EN

Stack Overflow用户

发布于 2016-07-11 15:16:07

使用INSTR函数而不是Contains

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38301031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档