SQL Server 的大小写设置有点门道,不是改个名字那么简单。你要是碰上数据需要严格区分大小写的场景,比如账号密码这种,那就得动点手脚。常用的几种方法我都整理了一下,基本从字段级、表级到数据库级都有,灵活用还挺方便的。

字段级设置是最灵活的,直接上 COLLATE 就行:

ALTER TABLE tb 
ALTER COLUMN colname NVARCHAR(100) COLLATE Chinese_PRC_CS_AS

这样你可以单独让某个字段区分大小写,别的字段不动,比较适合老系统里小范围优化。

表级/库级设置就比较一刀切了,整个表或者数据库都按新规则走。比如:

ALTER DATABASE dbname COLLATE Chinese_PRC_CS_AS

数据库建的时候也能直接指定,省得之后改来改去。

有时候你看似写对了 SQL,但查出来的数据总对不上,十有八九是大小写的问题,尤其是跟别的系统对接时,写个'Admin''admin',一不小心就匹配不到。

哦对了,这事不只是 SQL Server 会遇到,MySQLSQL、甚至MATLABPLSQL 都有自己的方式,记得按环境来选。

建议你写数据库字段的时候,提前统一规范,比如全小写,全用CS_AS,后期少踩坑。要是已经上线了,就别大改,用字段级COLLATE改局部,比较稳。

如果你项目里涉及多语言或用户录入的大小写敏感内容,一定要考虑清楚数据的COLLATION规则,后期起来可麻烦了。