SQL 查询 大小写

本文介绍如何在 SQL Server 2000 中实现大小写敏感的查询操作,提供了几种不同的方法来达到这一目的,并提及了通过数据库设置实现的可能性。

 Sql2000在查询是不区分大小的,例如


select * from Users
where UserID='TEST'

select * from Users
where UserID='test'

是一样的结果。

 

我从网上搜到下面的语句可以达到区分大小写的效果,与大家分享:


select * from Users
where binary_checksum(UserID)=binary_checksum('TEST'‘)

 

或者

 

select * from Users
where convert(binary,UserID)=convert(binary,''TEST'')

 

或者

select * from Users where UserID collate  Chinese_PRC_CS_AS_WS like 'wangjunsheng'

 

 

网上还有哥们说进行数据库设置也可以做到,时间关系,我没去仔细查。哪个大哥知道的话,帮忙指点指点。谢谢先。

小弟刚入行不久,大哥大姐多多关照。

SQL 查询中实现忽略大小写的模糊查询,通常有以下几种方法可供选择。这些方法适用于不同的数据库管理系统(DBMS),如 MySQL、PostgreSQL、Oracle、SQL Server 和 DB2 等。 ### 方法一:使用 `LOWER()` 或 `UPPER()` 函数 这种方法的核心思想是对查询字段和目标值都应用相同的大小写转换函数(如 `LOWER()` 或 `UPPER()`)。这样可以确保比较时双方处于同一大小写状态。 ```sql SELECT * FROM USER WHERE LOWER(EN_NAME) LIKE CONCAT('%', LOWER('search_value'), '%'); ``` 这种方式的优点是兼容性强,几乎所有的主流关系型数据库都支持这种做法[^1]。 --- ### 方法二:调整数据库的排序规则(Collation) 许多现代数据库提供了对字符集和排序规则的支持。通过设置合适的排序规则,可以让整个表或列默认忽略大小写差异。 #### 对于 MySQL: 如果希望永久改变某一列的行为,可以在创建表的时候指定其 collation 属性为不区分大小写的版本,比如 `utf8_general_ci` (其中 `_ci` 表示 case-insensitive)。 ```sql CREATE TABLE USER ( EN_NAME VARCHAR(255) COLLATE utf8_general_ci, ... ); ``` 之后无需额外操作即可直接运行普通的 `LIKE` 语句而自然达到忽略大小写的效果[^3]。 #### 对于 SQL Server: 同样地,可以通过修改列级或者服务器级别的 Collation 来达成目的: ```sql ALTER TABLE USER ALTER COLUMN EN_NAME NVARCHAR(255) COLLATE Latin1_General_CI_AS; ``` 这里的 `CI` 同样代表 Case Insensitivity[^4]。 注意:更改现有表结构可能会带来性能开销以及潜在的数据一致性问题,请谨慎行事! --- ### 方法三:利用正则表达式或其他高级功能 部分数据库还提供更为复杂的匹配工具,例如 PostgreSQL 的 POSIX 正则表达式支持无须关心字母情况就能完成任务。 ```postgresql SELECT * FROM USER WHERE EN_NAME ~* 'search_pattern'; -- "~*" means case insensitive regex match ``` 不过这类技术往往局限于特定平台之上,并不具备广泛适用性[^2]。 综上所述,最通用也最容易实施的办法就是采用第一种方案——即显式调用 `LOWER()`/`UPPER()` 函数来进行标准化处理后再做对比测试。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值