偶发现一个很奇怪的问题!
我用sql语句查询数据库 
SELECT *
  FROM [教务处信息] where bm='06101201' and xm='王宇' 查询不出来这条记录 可是我的数据库里面有这条记录啊?
请问大哥们这是为什么。。偶着急等待结果。。
谢谢各位先

解决方案 »

  1.   

    去掉空格试试:
    SELECT *  FROM [教务处信息] where 
    replace(bm,' ','')='06101201' and replace(xm,' ','')='王宇'
      

  2.   

    如果bm和xm列的数据类型是UNICODE类型(nchar或nvarchar),在常量前加上N前缀试试:
    SELECT *  FROM [教务处信息] where 
    replace(bm,' ','')= N'06101201' and replace(xm,' ','')= N'王宇'
      

  3.   

    抱歉,更正一下:
    如果bm和xm列的数据类型是UNICODE类型(nchar或nvarchar),在常量前加上N前缀试试:
    SELECT *  FROM [教务处信息] where 
    replace(bm,N' ',N'')= N'06101201' and replace(xm,N' ',N'')= N'王宇'楼主最好说明一下bm和xm的数据类型.
      

  4.   

    --try
    SELECT *
      FROM [教务处信息] where rtrim(ltrim(bm))='06101201' and rtrim(ltrim(xm))='王宇'
      

  5.   

    bm和xm是nvarchar类型
    偶是 用c#程序写的。。
    你说的sql语句怎么实现呢?
      

  6.   

    SELECT *
      FROM [教务处信息] where bm=N'06101201' and xm=N'王宇'--在查询分析器中运行以上SQL,看看有没有记录
      

  7.   

    如果是nvarchar类型,那么一定要在字符串常量前加N前缀,以表示这个字符串常量是UNICODE类型.这样构建SQL字符串试试:
    SELECT *  FROM [教务处信息] where bm=N'06101201' and xm=N'王宇'
      

  8.   

    不好意思 各位给的sql语句偶都式了 还是不行 。谢谢各位的关心
    可是 是为什么呢/
      

  9.   

    如果
    SELECT *  FROM [教务处信息] where 
    replace(bm,N' ',N'')= N'06101201' and replace(xm,N' ',N'')= N'王宇'
    也不行的话,请楼主检查一下SQLSERVER2000是否打了SP4补丁,如果没有打补丁请先打上SP4补丁再议.
    下载地址:
    http://www.microsoft.com/downloads/details.aspx?familyid=8e2dfc8d-c20e-4446-99a9-b7f0213f8bc5&displaylang=en
      

  10.   

    数据是Excel文件导入的所有的数据类型都是nvarchar(255)还有一个自增的id int
      

  11.   

    数据库是sql2005 
    一两清风 还是不行
      

  12.   

    SELECT *
    FROM [教务处信息] where bm=N'06101201' and xm=N'王宇'
      

  13.   

    这样试试:
    ----先将数据导入到临时表中
    select * into #tmp from [教务处信息]
    ----从临时表中查找,看看是否能查找出来
    SELECT *  FROM #tmp where bm=N'06101201' and xm=N'王宇'
    ----清除临时表
    drop table #tmp
      

  14.   

    SELECT *
    FROM [教务处信息] where bm=N'06101201' and xm=N'王宇'
    不行啊 。。
      

  15.   

    这样试试:
    ----先将数据导入到临时表中
    select * into #tmp from [教务处信息]
    ----从临时表中查找,看看是否能查找出来
    SELECT * FROM #tmp where bm=N'06101201' and xm=N'王宇'
    ----清除临时表
    drop table #tmp
    ============================================
    还是不行
      

  16.   

    SELECT *
      FROM [教务处信息] where bm='06101201' SELECT *
      FROM [教务处信息] where xm='王宇' 分开能不能查到再试试用like可能字段时有回车或换行之类的字符
      

  17.   

    你确定 bm='06101201' 和 xm='王宇' 是不是同一条记录
      

  18.   

    看看bm='06101201' 的记录中有没有xm='王宇' 这行.
    SELECT *  FROM [教务处信息] where bm=N'06101201'
      

  19.   

    先查:
    ----------------------------------------
    SELECT *
      FROM [教务处信息] where bm='06101201'
    ----------------------------------------
    如果没有数据或者没有望于这个人,再查:
    ----------------------------------------
    SELECT *
      FROM [教务处信息] where xm='王宇'
    ----------------------------------------
    如果没有王宇这个人,lz是不是该检查一下数据库里面这个人员信息被删掉了
      

  20.   

    XingYouGu() ( ) 信誉:100    Blog  2006-12-23 22:44:19  得分: 0  
     
     
       
    分开就能查到数据!  
     你确定分开来查到的数据是一条数据吗?
    或者能查到同一条数据吗?
      

  21.   

    SELECT *
    FROM [教务处信息] where bm like '%06101201%' and xm like '%王宇%'
      

  22.   

    Excel文件单元格里有看不见的字符,可能是最后一个回车。换like匹配看看
      

  23.   

    你应该是没有用: user 表所在数据库
    你不在表所的数据库是查不到表的
      

  24.   

    你应该是没有用: use 表所在数据库
    你不在表所的数据库是查不到表的
      

  25.   

    你应该是没有用: use 表所在数据库
    你不在表所在的数据库是查不到表的
      

  26.   

    谢谢 各位的关心和帮助!~!!!!!!!
    小弟 很感动谢谢。。我用了use
    而且  在06101201 这个班里面 确实有王宇这个人
    sql 2000里面我也试了 还是找不见。。
    不过我改了存储过程 避免出现这样的情况。。程序添加 不了 让教务处的那帮混蛋 自己手动添加。。
      

  27.   

    SELECT *
      FROM [教务处信息] where bm='06101201' and xm='王宇'
    换成
    SELECT *
      FROM 教务处信息 where bm='06101201' and xm='王宇' 
    试试,这是没有办法的办法了
      

  28.   

    楼主,用Dbcc CheckTable()试试。
      

  29.   

    数据库的表的类型是nvarchar(255) 因为是从Excel表格导入的。。
    我使用了use 指定了数据库
    而且 数据库里面有这条信息 

    SELECT * FROM [教务处信息] where bm like '%06101201%' and xm like '%王宇%'
    是能找出来的。小弟 谢谢各位的关心和帮助  谢谢!