首页 > 解决方案 > 如何查询一个字段中的一些字符?

问题描述

我的数据库是 Oracle 11g。

我想在 sql 中做一个 in 查询。查询条件是匹配某个字段的一些字符:

    description
    CWLV321900017391;EFHU3832239
    CWLV321900017491;ERHU3832239
    CWLV321900017591;ERHU3832239
    CWLV321900017691;ERHU3832239

我的查询是这样的:

select * from product where description in ('CWLV321900017391', 'CWLV321900017491'); 

它在结果中不返回任何记录。

我期望结果如下:

    description
    CWLV321900017391;EFHU3832239
    CWLV321900017491;ERHU3832239

如何通过 SQL 获取?

谢谢。

标签: sqlstringoracle

解决方案


您正在使用IN在表中搜索部分字符串匹配description。这不会返回结果,因为IN只会匹配精确值。

相反,实现此目的的一种方法是使用带有 的LIKE运算符%

select  *
  from  product
  where (description LIKE 'CWLV321900017391%' OR
        description LIKE 'CWLV321900017491%'); 

%末尾的 表示任何内容都可以跟在指定的文本之后。

这将返回以or开头的description任何内容。 CWLV321900017391CWLV321900017491

顺便说一句,如果您的搜索词出现在描述字段中的任何位置,您将需要%在搜索词的每一端使用 a:

description LIKE '%CWLV321900017391%' OR description LIKE '%CWLV321900017491%'

推荐阅读