这句简单的sql语句哪里错了?
我要判断字符串里有没有问号‘?’select *
from table_a
where answer not like '%?%'
or answer not like '%?%';但是选出来的数据里还有问号?而且是连续多个问号,例如“我的天???下雨了”
到底哪里错了!

解决方案 »

  1.   

    还是不对。
    我是这样写的。还是会选出有问号的数据出来。select *
    from table_a
    where ...
    and id not in (select id
                   from table_a
                   where answer like '%?%'
                   or answer like '%?%')
      

  2.   

    LZ应该是犯逻辑错误了
    select * from table_a 
    where answer not like '%?%' or answer not like '%?%'; 
    改为
    where answer not like '%?%' and answer not like '%?%'; 
      

  3.   

    我前面说错了 原来是那样写的,现在下面是这样写的。但还是相同的结果。莫名了select *
    from table_a
    where ...
    and id not in (select id
                   from table_a
                   where answer like '%?%'
                   or answer like '%?%')
      

  4.   

    没有报错,只是选出来的结果不符合where条件。
      

  5.   

    select id
                   from table_a
                   where answer like '%?%'
                   or answer like '%?%'
    执行结果包括那条记录吗?
      

  6.   

    没用select id 
                  from table_a 
                  where answer like '%?%' 
                  or answer like '%?%' 
    这个的结果里面居然没有那个带问号的id
      

  7.   

    select *
    from table_a
    where ...
    and id not in (select distinct id
                   from table_a
                   where answer like '%?%'
                   or answer like '%?%')
    更正一下
      

  8.   

    直接不要not呀,然后%?%这样表达也错了,应该就是: 选出/排除 问号的记录 呀
    %?%这样写是有可能把含连续3个问号的记录给选中的,其实你既然能选中连续3个问号的,那就已经说明了你只是想选出“只要包含问号”的记录就行了的呀
      

  9.   


    这句看起来没有问题了,distinct有没有无所谓的。
      

  10.   

    select * 
    from table_a 
    where ... 
    and id not in (select  id 
                  from table_a 
                  where answer like '%?%' 
                  or answer like '%?%') 
    这个基本上没什么问题,不过如果ID或ANSWMER有NULL的时候会有问题
      

  11.   

    不知道 lz 是不是这个意思 就是通过一条sql  显示某列中不包括 ?号的全部信息 是这样的吗?直接就一个 sql语句就可以啊   比方说   SELECT   *   FROM   表格名称    WHERE   列名   NOT  LIKE  '%?%'
       这样的话 就把某列中包括问号的全部去掉 剩下不包括问号的 信息 就会显示出来。。
     不知道 lz  是不是这个意思?   
      

  12.   

    LZ这个情况很奇怪
    按照LZ的描述,sql语句应该是没有问题的,所以建议LZ仔细检查一下其他方面
    我建了一个临时表tb_test测试时正常的
    id     remart
    ---------------------------------
    1      今天天气不好????的确
    2      今天天气很好???的确
    3      今天天气不好也不坏SQL> select id from tb_test where re like '%?%' or re like '%?%';        ID
    ----------
             1
             2SQL> select id from tb_test
      2  where id not in (select id from tb_test where re like '%?%' or re like '%?%');        ID
    ----------
             3SQL>
      

  13.   


    现在问题是LZ的这个语句中查不到那个带问号的记录(而这里应该能够找到那条记录)
    那么LZ应该找到那条记录,查看一下里面问号是如何写进去的?
    可以将那个问号复制出来,然后粘贴到like语句后面进行查询,看能不能查出来?
      

  14.   

    select * from test_02 where instr(name,'?')=0 and instr(name,'?')=0实在不行这样查查试试
      

  15.   


    select * from table_1 where answer not like '%?%' lz是不把引号'打成中文的了啊
      

  16.   

    我是这么写的,在PL/SQL中执行,oracle 9i,没有问题啊。成功过滤了。
    不知道lz的不能过滤是怎么回事?
      

  17.   

    Select * From Table_a Where Instr(Answer, '?') = 0;
      

  18.   

    select * 
    from table_a 
    where TO_SINGLE_BYTE(answer) not like '%?%' 
      

  19.   

    逻辑上SQL语句没有错,可能是全角半角 或是字符集的关系。
      

  20.   

    对不起,我想我是说错了,应该是or 改成and ,还有就是把存在中英文问题,把中英文条件都加进去才好,我测试过了