SqlServer2005视图中查询列值为中文的查询不到,英文的值却可以,怎么回事呢?select * from UserData where tp_ContentType='问题'  --查询tp_ContentType的值为问题时 查询不到结果,但是数据中确实有 tp_ContentType的值为“问题”的列呀。不知道这个怎么回事呢?
select * from UserData where tp_ContentType='Person' --英文时是正常的
select * from UserData   --查询全部数据,同样有 tp_ContentType的值为‘问题’的值呀
select * from UserData where tp_Version=1  --int类型也是正常的看一下运行截图,搞不清楚怎么回事了。难道是 是中文时还需要别的处理吗?

解决方案 »

  1.   

    哎。。后面肯定有空格。。就查下
    select * from UserData where tp_ContentType like '%问题%' 你就明白了。。结贴给分
      

  2.   

    这样试试 
    where convert(varbinary, tp_ContentType)= convert(varbinary, '问题')  
      

  3.   


    多谢了,可是这样也没有值,NND,到底是怎么回事呢。疯了。
      

  4.   

    悲剧。我第一次遇到。
    SqlServer 对中文兼容性还是很NX的,我在外包项目里面经常用中文字段,中文存储过程。
      

  5.   

    有这样的事?那你把一条记录中的“问题”,改成其他的文字,再like查询下。。不行,就关闭sql 管理器,再重启。
      

  6.   

    select *,'问题' from UserData 试试看看会不会乱码。
      

  7.   

    我在想是不是应该把里面的 中文用什么方法转换一下呢。我获取出来 SQL都Print不出来,出来成乱码了。怎么回事呢?
      

  8.   


    select * from UserData where tp_ContentType=N'问题'
      

  9.   

    这样查询也是可以正常显示的。print不了
      

  10.   

    请列出:
    1. 你的数据库服务器的操作系统语言版本
    2. 你这个SQL数据库的语言版本
    2. 你的数据库以及表UserData的排序规则设置
    3. 你这个字段tp_ContentType的数据类型
      

  11.   

    select * from UserData where tp_ContentType=N'问题'
    定义变量为Nvarchar的意思吧。
      

  12.   

    1、Windows xp Sp3 中文版
    2、SQlServer 2005 中文版 Express
    3、没有排序
    4、nvarchar
      

  13.   


    应该不是吧,这个列的数据类型本来就是nvarchar类型的呀。不需要这样的吧
      

  14.   

    其实这个和数据类型没有关系,N'问题' 是表示用Unicode2.0 的字符格式。 
    我给你写一些例子 你会觉得更奇怪的:---随便建一张两个字段的表。
    use tempdb;
    go
    if object_id('dbo.DemoCollation') is not null
    drop table dbo.DemoCollation;
    go
    create table dbo.DemoCollation
    (
    id smallint not null identity(1,1) primary key,
    word Nvarchar(10) not null
    );----表建好了,现在分别插入4个字符,分全角,半角吗,大写,小写
    insert into dbo.DemoCollation values('A');--全角
    insert into dbo.DemoCollation values('A');--半角
    insert into dbo.DemoCollation values('a');--
    insert into dbo.DemoCollation values('a');--一般在区域语言设置为简单中文的操作系统上的Sql Server实例,其Sql server 实例,数据库实例与表字段的排序若没有指定大小写有别,或以二进制为比较标准时,select * from dbo.DemoCollation 会返回上述4中情况。若要查询半角大写字符A 可以这样写select id,word from dbo.customers
    where word='A' collate Chinese_Taiwan_Stroke_Bin
    所以我感觉你的问题 是你的 '问题' 这个汉子的格式问题
      

  15.   

    如果字段为中文的 在SQL SERVER2005里面可以 加上N'中文'
      

  16.   

    select * from UserData where tp_ContentType=N'问题'