日期:2014-05-19  浏览次数:20512 次

请问如果能使group by区别大小写
系列     型号
aITO     aITO10252
aito     aito10253
aito     aito11245

想得到有几个不同的系列数,区分大小写应该是2,如何写SQL语句?

------解决方案--------------------
指定排序规则
------解决方案--------------------
转为二进制类型(varbinary)就可以区分大小写了。
------解决方案--------------------
比如说一个表中两条记录的address字段值分别为:aaaa 和 aAAa,如果用
select * from mytable where address = 'aaaa '
则两条记录都查出来了,我希望只得到一条记录,这样的SQL应该怎么写?

create table #a(
[id] [char] (10),
[address] [char] (10)
)
insert into #a(id , address) values( '1 ' , 'aaaa ')
insert into #a(id , address) values( '1 ' , 'aAAa ')

select * from #a where address = 'aaaa ' COLLATE Chinese_PRC_CS_AS
select * from #a where address = 'aAAa ' COLLATE Chinese_PRC_CS_AS

drop table #a

id address
---------- ----------
1 aaaa

(所影响的行数为 1 行)

id address
---------- ----------
1 aAAa

(所影响的行数为 1 行)


如何查只以大写AB开头的呢?
通常情况下写select * from 表名 where 列名 like 'AB% '
但是这样,以小写ab开头的纪录也会被查找出来 如何查只以大写AB开头的呢?
select * from table where left(col,2) = 'AB% ' COLLATE Chinese_PRC_CS_AS
select * from table where col like 'AB% ' COLLATE Chinese_PRC_CS_AS



ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CI_AS
--不区分大小写
ALTER TABLE tb
ALTER COLUMN colname nvarchar(100) COLLATE Chinese_PRC_CS_AS
--区分大小写
数据库
ALTER DATABASE database
COLLATE Chinese_PRC_CS_AS
--区分大小写

ALTER DATABASE database
COLLATE Chinese_PRC_CI_AS
--不区分大小写


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

方法二.sql server 8.0以上的版本才可以,7.0及其以下不支持
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 * fro