upper(@var)=upper(@var)

lower(@var)=lower(@var)
lower

解决方案 »

  1.   

    UCASE( )1、
    UPPER( ) 将字符串转换为大写字母 SELECT * FROM employee
    WHERE UPPER(lname) = 'SMITH'
    将 lname 列的内容转换为大写字母后再与特定的值进行比较(以避免当搜索区分大小写时不匹配)。有关在 SQL Server 中区分大小写的详细信息,请参见查询设计器注意事项。
    区分大小写
    SQL Server 数据库中的文本信息可以用大写字母、小写字母或二者的组合进行存储。例如,姓氏可以"SMITH"、"Smith"或"smith"等形式出现。数据库是否区分大小写取决于 SQL Server 的安装方式。如果数据库区分大小写,当搜索文本数据时,必须用正确的大小写字母组合构造搜索条件。例如,如果搜索名字"Smith",则不能使用搜索条件"=smith"或"=SMITH"。另外,如果服务器被安装成区分大小写,则必须用正确的大小写字母组合提供数据库、所有者、表和列的名称。如果提供的名称大小写不匹配,则 SQL Server 返回错误,报告"无效的对象名"。当使用关系图窗格和网格窗格创建查询时,查询设计器始终正确地反映出服务器是否区分大小写。但是,如果在 SQL 窗格中输入查询,则必须注意使名称与服务器解释名称的方式相匹配。如果服务器是用不区分大小写的选项安装的,则可以用大小写字母的任意组合输入数据库对象标识符和搜索条件。提示   若要确定服务器是否区分大小写,请执行存储过程 sp_server_info,然后检查第 18 行的内容。如果服务器是用不区分大小写的设置安装的,则 sort_order 选项将设置为"不区分大小写"。可以从查询分析器运行存储过程。
    这里还有更详细的内容,如果想知道的更多,可以参考一下:http://expert.csdn.net/Expert/TopicView1.asp?id=1171622
      

  2.   

    转换成varbinary比较就可以了,看下面的例子:
    ======================================================
    DECLARE @user_password varchar(12)IF CAST(@user_password AS varbinary(12))=CAST('BamBi2000' AS varbinary(12))
    PRINT 'Password match' 
    ELSE
    PRINT 'Password mismatch' 
    ======================================================
    注意,只可以在SQL 2000中用
      

  3.   

    to seth99:在SQL7.0中如何处理?
      在查询用户名及其密码时应该区分大小写。验证用户名及其密码是否匹配时我是用存储过程来实现的。‘=’不区分大小写
      

  4.   

    试试看用CONVERT吧,
    ==============================
    格式:CONVERT(data_type[(length)],expression[,style])
    Sample:CONVERT(varbinary(12),'BamBi2000')
    ==============================
    将要比较的字符转换成varbinary再比较
      

  5.   

    前面的CAST好像也可以在SQL 7下用,我这没有SQL 7,你试试。