表 user
-------------
name  ...
-------------
WANG
KK
..
declare @n nvarchar(10)
set @n='wang'select name from user where  name=@n这样也能返回结果。怎么在查询的时候就识别大小写?输入不对就不给显示?

解决方案 »

  1.   

    --1. 为数据库指定排序规则
    CREATE DATABASE db COLLATE Chinese_PRC_CI_AS
    GOALTER DATABASE db COLLATE Chinese_PRC_BIN
    GO
    /*====================================*/
    --2. 为表中的列指定排序规则
    CREATE TABLE tb(
    col1 varchar(10),
    col2 varchar(10) COLLATE Chinese_PRC_CI_AS)
    GOALTER TABLE tb ADD col3 varchar(10) COLLATE Chinese_PRC_BIN
    GOALTER TABLE tb ALTER COLUMN col2 varchar(10) COLLATE Chinese_PRC_BIN
    GO
    /*====================================*/
    --3. 为字符变量和参数应用排序规则
    DECLARE @a varchar(10),@b varchar(10)
    SELECT @a='a',@b='A'--使用排序规则 Chinese_PRC_CI_AS
    SELECT CASE WHEN @a COLLATE Chinese_PRC_CI_AS = @b THEN '@a=@b' ELSE '@a<>@b' END
    --结果:@a=@b--使用排序规则 Chinese_PRC_BIN
    SELECT CASE WHEN @a COLLATE Chinese_PRC_BIN = @b THEN '@a=@b' ELSE '@a<>@b' END
    --结果:@a<>@b
      

  2.   

    有SQL的大量例子包吗?发份给我啊,谢谢!
    [email protected]
      

  3.   

    declare @n nvarchar(10) 
    set @n='wang' select name from [user] where  name=@n  COLLATE Chinese_PRC_CS_AS  
    Chinese_PRC_CS_AS  --其中 CS 代表是区分大小写 CI 代表不区分
      

  4.   

    create table tt(Name varchar(10) collate Chinese_PRC_Cs_AS)insert into tt select 'AA'
    insert into tt select 'aa'select * from tt
    where name='AA'------
    name
    AA
      

  5.   


    --
    修改collate的值,默认的为:collate Chinese_PRC_CI_AS,不区别大小,
    将它修改为 collate Chinese_PRC_Cs_AS 就可以区别大小了
    alter table user alter name varchar(20) collate Chinese_PRC_Cs_AS
      

  6.   

    alter table [user]
    alter column [name] nvarchar(10) COLLATE Chinese_PRC_CS_AS