表内一个字段 
上海(空格)广州(空格)云南
北京(空格)上海
山西(空格)北京(空格)广州
...
我有个字符串为”广州(空格)山西”我想输出所有含有上海和山西的行的数据
结果
上海(空格)广州(空格)云南
山西(空格)北京(空格)广州

解决方案 »

  1.   

    select * from table
    where repleace(col,' ','') like '%上海%' or repleace(col,' ','') like '%山西%'
      

  2.   

    我有个字符串为”广州(空格)山西” 这句是什么意思?
    是说要求返回的结果里包含 上海 或者 山西 是吗
    但第二行业含有上海,怎么没返回到查询结果,晕了。
    利用正则表达式解,大致差不多
    2楼的回答得差不多,函数名写错了,是replace
    而且这个函数也没什么必要,空格不影响结果如果是要返回同时含有上海和山西值得话,代码如下
    create table test_a(col varchar2(50) not null);insert into test_a values('上海 广州 云南');
    insert into test_a values('北京 上海');
    insert into test_a values('山西 北京 广州');
    insert into test_a values('上海 广州 山西');
    insert into test_a values('广州 山西 上海');select * from test_a where col like '%上海%山西%' or col like '%山西%上海%';COL
    上海 广州 山西
    广州 山西 上海
      

  3.   


    谢谢 不过我里面是动态字符串
    可能只有”上海”
    或者 ”上海 广东”
    或者 ”上海 广东 北京”
    不是一个固定的字符串
    在不切割字符串的情况下如何模糊查询 ”上海 广东 北京”和 col 之间的关系
    例如
    insert into test_a values('上海 广州 云南');
    insert into test_a values('北京 上海');
    insert into test_a values('山西 北京 广州');
    insert into test_a values('上海 广州 山西');
    insert into test_a values('广州 山西 上海');
    我动态的字符串是”上海”
    结果
    上海 广州 云南
    上海 广州 山西
    广州 山西 上海如果我动态的字符串是” 北京 上海 广东”
    结果
    '上海 广州 云南'
    '北京 上海'
    '山西 北京 广州'
    '上海 广州 山西'
    '广州 山西 上海'
    动态的字符串中的一个地方存在 就显示整条记录有没有不用自建函数的方法
    一句sql能解决的?
      

  4.   

    应该就是模糊查询的问题了,应该可以用Like吧
      

  5.   

    select * from tb
    where instr(col,'上海') >0 or instr(col,'山西')>0
      

  6.   


    select * from tb 
    where instr(col,'上海') >0 or instr(col,'山西')>0
    or 
    select * from tb 
    where col like  '%上海%' or col like  '%山西%'
      

  7.   

    我就是想问 有没有不分离那个长的字符串 能把长字符串里面拿每个
    地方作比较 写在一个通用的sql语句里面value = '%上海%'
    select * from tb 
    where col like  '%value%'
    只能查找一个上海地方value = '%上海%山西%'
    select * from tb 
    where col like  '%value%'
    只能查找一个既有上海又有山西的地方value=?
    select * from tb 
    where col like  '%value%'
    能查找既有上海又有山西的地方注1 value是变量 里面可能带很多个城市
    注2 value内的城市名字和之间的符号可以自由搭配 但是不能把value切割
      

  8.   

    首先可以在变量前后加'%',再将中间的空格替换为'%'  like 即可
      

  9.   


    这样查出来的结果是 "A"AND"B"AND"C"
    我想要得是  "A" or "B" or "C"
      

  10.   

    select t.col from tbl t where t.col like '%上海%' and t.col like '%山西%'
      

  11.   

    算了 换个问题 回答就给分结帖了id value
    1   2
    2   4
    3   6
    4   3
    5   1
    ...求大于等于最大值的所有行(最简单的方法)结果
    比如最大值6
    3   6
    15  6
    68  6
    ...
      

  12.   

    select id,value from table where value in ( select max(value) from table);