select * from where name='abc' 
collate Chinese_PRC_CS_AI --加了这个注释

解决方案 »

  1.   

    --也可以转换成二进制后再比较
    select * from where convert(binary,name)=convert(binary,'abc')
      

  2.   

    区分大小写   遵循所使用的数据库的大小写区分规则。所使用的数据库决定文本的搜索是否区分大小写。 
    如果不能确定数据库是否使用区分大小写的搜索,可以在搜索条件中使用 UPPER 或 LOWER 函数转换搜索数据的大小写,如下例所示:WHERE UPPER(lname) = 'SMITH'
    楼主的问题可以转换为二进制再进行比较
    select * from where cast(name as varbinary)=cast('abc' as varbianry)
      

  3.   

    可使用 ALTER TABLE 语句更改列的排序规则:CREATE TABLE MyTable
      (PrimaryKey   int PRIMARY KEY,
       CharCol      varchar(10) COLLATE French_CI_AS NOT NULL
      )
    GO
    ALTER TABLE MyTable ALTER COLUMN CharCol
                varchar(10)COLLATE Latin1_General_CI_AS NOT NULL
    GO不能更改正由以下对象引用的列的排序规则: 计算列。
    索引。
    自动生成或由 CREATE STATISTICS 语句生成的分发统计。
    CHECK 约束。
    FOREIGN KEY 约束。 
    还可在 ALTER DATABASE 上使用 COLLATE 子句来更改数据库的默认排序规则:ALTER DATABASE MyDatabase COLLATE French_CI_AS更改数据库的默认排序规则不会更改任何现有用户定义表中的列排序规则。可使用 ALTER TABLE 更改列的排序规则。在 ALTER DATABASE 语句上使用 COLLATE CLAUSE 可以: 更改数据库的默认排序规则。新的默认排序规则适用于随后创建在数据库中的所有列、用户定义数据类型、变量和参数。在数据库中定义的对象上解析 SQL 语句中指定的对象标识符时,也使用新的默认排序规则。
    将系统表中的任何 char、varchar、text、nchar、nvarchar 或 ntext 列更改为使用新的排序规则。
    将存储过程和用户定义函数的所有现有的 char、varchar、text、nchar、nvarchar 或 ntext 参数和标量返回值更改为使用新的排序规则。
    将 char、varchar、text、nchar、nvarchar 或 ntext 系统数据类型,以及基于这些系统数据类型的所有用户定义数据类型更改为使用新的默认排序规则。 
    为列或数据库以外的任何其它对象指派了排序规则后,将不能更改排序规则,除非除去并重新创建对象。这一操作将十分复杂。若要更改 Microsoft® SQL Server™ 2000 实例的默认排序规则,必须: 确保具有重新创建用户数据库及数据库中的所有对象所需的全部信息或脚本。
    使用工具(如大容量复制)导出所有数据。
    除去所有用户数据库。
    重建 master 数据库并指定新的排序规则。
    创建所有数据库及数据库中的所有对象。
    导入所有数据。
      

  4.   

    不好意思, 请问Chinese_PRC_CS_AI是什么意思?在帮助中找不到.谢谢!
      

  5.   

    --也可以转换成二进制后再比较
    select * from where convert(binary,name)=convert(binary,'abc')上面这句还是找不到呀,name 原来的数据类型是nchar.
    请高手指点
      

  6.   

    Chinese_PRC_CS_AI是什么意思?在帮助中找不到.谢谢!
    ======>
    表示按GB字符集区分大小写且不区分重音
      

  7.   

    见帮助‘字符集-SQL Server, (参见排序规则)‘
      

  8.   

    zlp321002(飘过):你的办法很好,可如我想在ACCESS中使用这条语句确不行,请问在ACCESS如何实现大小写查询? 
    wgsasd311(自强不息):select * from where cast(name as varbinary)=cast('abc' as varbianry)这条语句没有任何查询结果呀?name的数据类型是nvarchar。另外用WHERE UPPER(name) = 'SMITH','SMITH'和'smith'都在查询结果中,没能实现筛远,另外在ACCESS中确不支持这两个函数?
    xueguang(xg):select * from where convert(binary,name)=convert(binary,'abc')这条语句没有任何查询结果呀?name的数据类型是nvarchar。
    大家回答的太好了,只是这次分发少了,有谁知道怎么可以加分么?
      

  9.   

    xueguang(xg):select * from where convert(binary,name)=convert(binary,'abc')这条语句没有任何查询结果呀?name的数据类型是nvarchar。--没有结果估计是你的数据里可能有空格,截一下空格试试
    select * from where convert(binary,ltrim(rtrim(name)))=convert(binary,'abc')
      

  10.   

    select * from where convert(binary,name)=convert(binary,'abc')
      

  11.   

    xueguang(xg):--没有结果估计是你的数据里可能有空格,截一下空格试试
    select * from where convert(binary,ltrim(rtrim(name)))=convert(binary,'abc')
    还是没有结果呀?
    还有我在VC中通过ADO使用这些语句来操纵ACCESS数据库,这些函数在ACCESS都不好使呀!
      

  12.   

    xueguang(xg):--没有结果估计是你的数据里可能有空格,截一下空格试试
    select * from where convert(binary,ltrim(rtrim(name)))=convert(binary,'abc')
    还是没有结果呀?