我用VB做的一个程序,表tb中fullname的字符有很多空格,例如:
a _b
a_b _c
a _b_c
a_b _d我想把中间的空格去掉后刚好就等于我录入的值,例如a_b,a_b_c等等。
于是我使用如下语句
select * from tb where replace(fullname,' ','')="a_b"
但是发现没有生效,这条语句还是检索不到a_b,请问是什么原因呢?
如果有别的方法也可以推荐给我的。我用的是SQL 2000,感谢兄弟们。

解决方案 »

  1.   

    select * from tb where replace(fullname,' ','')='a_b'
      

  2.   


    select * from tb where  fullname like '%a%_%b%'
      

  3.   

    兄弟们完全搞错了我的意思,不过也怪我笔误,把'a_b'写成"a_b"了
    下面的这个语句
    select * from tb where replace(fullname,' ','')="a_b"
    改成
    select * from tb where replace(fullname,' ','')='a_b'
    也不能取到数。在网上查了下,说我的数据库里面的那个字段内容就不是空格,我把数据库里面的那个空格内容复制到replace(fullname,'空格','')也不对。据说是正则表达式的问题,不知道大家有没有好办法。
      

  4.   

    select * from tb select *,replace(fullname,' ','') as fullname_temp from tb select * from (
    select *,replace(fullname,' ','') as fullname_temp from tb 
    )
    where fullname_temp = 'a_b'一步一步看执行结果,你的空格有可能与数据库里的“空格”不一样。
      

  5.   


    用以下代码看看你的空格是什么吧,再说替换的事:
    access:
    select asc(mid(fullname,2,1)) as [asc] from tb where len(fullname)=4sql server:
    SELECT UNICODE(SUBSTRING(fullname, 2, 1)) AS [asc] from tb where len(fullname)=4