紧急求助:在SQL Server 2000 如何设置SQL语句对大小写敏感?

时间:2022-05-31 00:51:18
因为Solaris对SQL脚本敏感,所以想在SQL Server 2000 中设置这一项,减少Solaris版本出错的几率
,有哪位大虾知道请回复,万分感激!!

 如果方便也请发到jiangyingru66248@huawei.com中,以便及时看到回复,谢谢了!!

3 个解决方案

#1


--摘自联机帮助
如何创建区分大小写的 SQL Server 2000 实例(安装程序)
创建区分大小写的 SQL Server 2000 实例 

运行 SQL Server 安装程序来安装"SQL Server 2000 组件",并选择"安装数据库服务器",然后在 SQL Server 安装向导的"欢迎"屏幕上单击"下一步"按钮。


在"计算机名"对话框中,"本地计算机"是默认选项,本地计算机名显示在编辑框中。单击"下一步"按钮。


在"安装选项"对话框中单击"创建 SQL Server 新实例或安装客户端工具",然后单击"下一步"按钮。


按照"用户信息"和相关屏幕上的指导进行操作。


在"安装定义"对话框中,单击"服务器和客户端工具"选项,然后单击"下一步"按钮。


在"实例名称"对话框中: 
若要创建区分大小写的默认实例,请接受"默认"复选框并单击"下一步"按钮。


若要创建区分大小写的命名实例,请清除"默认"复选框并键入实例名称。 
在"安装类型"对话框中单击"自定义"选项,然后单击"下一步"按钮。


在"选择组件"、"服务帐户"和"身份验证模式"对话框中,更改或接受默认设置,然后单击"下一步"按钮。


在"排列规则设置"对话框中有两个选项: 
若要使 Windows 区域设置排序规则区分大小写,请选择"排列规则指示器",然后从列表中选择正确的排序规则指示器。清除"二进制"复选框,然后选择"区分大小写"复选框。


若要使 SQL 排序规则区分大小写,请选择"SQL 排序规则",然后键入正确的排序规则名称。 
有关排序规则选项的更多信息,请单击"帮助"按钮。完成选项的设置后,请单击"下一步"按钮。

在随后出现的各对话框中,更改或接受默认设置,然后单击"下一步"按钮。 


在完成选项的指定后,请在"开始复制文件"对话框中单击"下一步"按钮。


在"选择授权模式"对话框中,按照许可协议进行选择,然后单击"继续"按钮开始安装。


有关授权的信息,请单击"帮助"按钮或向系统管理员进行咨询。 

#2


方法一.安装SQL时选择区分大小写
或安装完以后重建mastar,选择区分大小
C:\Program Files\Microsoft SQL Server\80\Tools\Binn\rebuildm.exe

方法二.
alter database 数据库 COLLATE Chinese_PRC_CS_AS
修改排序规则,改成大小写敏感的排序规则
如果只修改一个表,用alter table语句 
如果修改一个库的默认排序规则,用alter datebase语句 
如果修改整个服务器的默认排序规则,用Rebuildm.exe重建master库 
--指定排序规则就可以了

--示例 
select replace('AbacB' collate Chinese_PRC_CS_AS_WS,'B','test') 

--如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了 

--示例 
create table tb(a varchar(20) collate Chinese_PRC_CS_AS_WS) 
insert tb values('Abac') 

select replace(a,'a','test') from tb

drop table tb

指定排序规则即可

Windows 排序规则名称 
在 COLLATE 子句中指定 Windows 排序规则名称。Windows 排序规则名称由排序规则指示器和比较风格构成。 

语法 
< Windows_collation_name > :: = 

    CollationDesignator_<ComparisonStyle>

    < ComparisonStyle > ::= 
        CaseSensitivity_AccentSensitivity 
        [_KanatypeSensitive [_WidthSensitive ] ] 
        | _BIN 

参数 
CollationDesignator 

指定 Windows 排序规则使用的基本排序规则。基本排序规则包括: 

当指定按字典排序时应用其排序规则的字母表或语言


用于存储非 Unicode 字符数据的代码页。 
例如 Latin1_General 或法文,两者都使用代码页 1252,或土耳其文,它使用代码页 1254。 

CaseSensitivity

CI 指定不区分大小写,CS 指定区分大小写。

AccentSensitivity

AI 指定不区分重音,AS 指定区分重音。

KanatypeSensitive

Omitted 指定不区分大小写,KS 指定区分假名类型。

WidthSensitivity

Omitted 指定不区分大小写,WS 指定区分大小写。

BIN

指定使用二进制排序次序。 



如果你只是目前查询区分,那么还是不要这样改,免得又反悔,如此查询:
select * from a 
/*
a_nam      a_add      
---------- ---------- 
1          aa
1          bb
2          cc
2          vv
2          kk
3          dd
3          ee
4          dd
5          ee
6          yy
6          yy

(11 row(s) affected)
*/
现在我们查询a_add = 'aa'的,'Aa'等等不行!
Example 1:

select * from a 
where a_add collate Chinese_PRC_CS_AS_WS = 'aa' 
/*
a_nam      a_add      
---------- ---------- 
1          aa

(1 row(s) affected)
*/

Example 2:

select * from a 
where a_add collate Chinese_PRC_CS_AS_WS = 'Aa' 
/*
a_nam      a_add      
---------- ---------- 

(0 row(s) affected)
*/

方法三.上面的记不住,那么就用最笨的方法,转化为ascii
select * from a
where 
ascii(substring(a_add,1,1)) = ascii(substring('Aa',1,1))
and 
ascii(substring(a_add,2,1)) = ascii(substring('Aa',2,1))
/*
a_nam      a_add      
---------- ---------- 

(0 row(s) affected)
*/

#3


学习...

#1


--摘自联机帮助
如何创建区分大小写的 SQL Server 2000 实例(安装程序)
创建区分大小写的 SQL Server 2000 实例 

运行 SQL Server 安装程序来安装"SQL Server 2000 组件",并选择"安装数据库服务器",然后在 SQL Server 安装向导的"欢迎"屏幕上单击"下一步"按钮。


在"计算机名"对话框中,"本地计算机"是默认选项,本地计算机名显示在编辑框中。单击"下一步"按钮。


在"安装选项"对话框中单击"创建 SQL Server 新实例或安装客户端工具",然后单击"下一步"按钮。


按照"用户信息"和相关屏幕上的指导进行操作。


在"安装定义"对话框中,单击"服务器和客户端工具"选项,然后单击"下一步"按钮。


在"实例名称"对话框中: 
若要创建区分大小写的默认实例,请接受"默认"复选框并单击"下一步"按钮。


若要创建区分大小写的命名实例,请清除"默认"复选框并键入实例名称。 
在"安装类型"对话框中单击"自定义"选项,然后单击"下一步"按钮。


在"选择组件"、"服务帐户"和"身份验证模式"对话框中,更改或接受默认设置,然后单击"下一步"按钮。


在"排列规则设置"对话框中有两个选项: 
若要使 Windows 区域设置排序规则区分大小写,请选择"排列规则指示器",然后从列表中选择正确的排序规则指示器。清除"二进制"复选框,然后选择"区分大小写"复选框。


若要使 SQL 排序规则区分大小写,请选择"SQL 排序规则",然后键入正确的排序规则名称。 
有关排序规则选项的更多信息,请单击"帮助"按钮。完成选项的设置后,请单击"下一步"按钮。

在随后出现的各对话框中,更改或接受默认设置,然后单击"下一步"按钮。 


在完成选项的指定后,请在"开始复制文件"对话框中单击"下一步"按钮。


在"选择授权模式"对话框中,按照许可协议进行选择,然后单击"继续"按钮开始安装。


有关授权的信息,请单击"帮助"按钮或向系统管理员进行咨询。 

#2


方法一.安装SQL时选择区分大小写
或安装完以后重建mastar,选择区分大小
C:\Program Files\Microsoft SQL Server\80\Tools\Binn\rebuildm.exe

方法二.
alter database 数据库 COLLATE Chinese_PRC_CS_AS
修改排序规则,改成大小写敏感的排序规则
如果只修改一个表,用alter table语句 
如果修改一个库的默认排序规则,用alter datebase语句 
如果修改整个服务器的默认排序规则,用Rebuildm.exe重建master库 
--指定排序规则就可以了

--示例 
select replace('AbacB' collate Chinese_PRC_CS_AS_WS,'B','test') 

--如果你是要求表支持,则可以建表时指定排序规则,这样replace就不用写排序规则了 

--示例 
create table tb(a varchar(20) collate Chinese_PRC_CS_AS_WS) 
insert tb values('Abac') 

select replace(a,'a','test') from tb

drop table tb

指定排序规则即可

Windows 排序规则名称 
在 COLLATE 子句中指定 Windows 排序规则名称。Windows 排序规则名称由排序规则指示器和比较风格构成。 

语法 
< Windows_collation_name > :: = 

    CollationDesignator_<ComparisonStyle>

    < ComparisonStyle > ::= 
        CaseSensitivity_AccentSensitivity 
        [_KanatypeSensitive [_WidthSensitive ] ] 
        | _BIN 

参数 
CollationDesignator 

指定 Windows 排序规则使用的基本排序规则。基本排序规则包括: 

当指定按字典排序时应用其排序规则的字母表或语言


用于存储非 Unicode 字符数据的代码页。 
例如 Latin1_General 或法文,两者都使用代码页 1252,或土耳其文,它使用代码页 1254。 

CaseSensitivity

CI 指定不区分大小写,CS 指定区分大小写。

AccentSensitivity

AI 指定不区分重音,AS 指定区分重音。

KanatypeSensitive

Omitted 指定不区分大小写,KS 指定区分假名类型。

WidthSensitivity

Omitted 指定不区分大小写,WS 指定区分大小写。

BIN

指定使用二进制排序次序。 



如果你只是目前查询区分,那么还是不要这样改,免得又反悔,如此查询:
select * from a 
/*
a_nam      a_add      
---------- ---------- 
1          aa
1          bb
2          cc
2          vv
2          kk
3          dd
3          ee
4          dd
5          ee
6          yy
6          yy

(11 row(s) affected)
*/
现在我们查询a_add = 'aa'的,'Aa'等等不行!
Example 1:

select * from a 
where a_add collate Chinese_PRC_CS_AS_WS = 'aa' 
/*
a_nam      a_add      
---------- ---------- 
1          aa

(1 row(s) affected)
*/

Example 2:

select * from a 
where a_add collate Chinese_PRC_CS_AS_WS = 'Aa' 
/*
a_nam      a_add      
---------- ---------- 

(0 row(s) affected)
*/

方法三.上面的记不住,那么就用最笨的方法,转化为ascii
select * from a
where 
ascii(substring(a_add,1,1)) = ascii(substring('Aa',1,1))
and 
ascii(substring(a_add,2,1)) = ascii(substring('Aa',2,1))
/*
a_nam      a_add      
---------- ---------- 

(0 row(s) affected)
*/

#3


学习...