MSSQL like 查询区分大小写的问题

本文讨论了在SQL查询中遇到的问题:如何在数据库权限仅限于查询的情况下,将一批数据中某些大写字符改为小写。通过使用特定的SQL语法,如在查询中声明区分大小写,实现对数据的大小写转换。此方法适用于MSSQL环境,并提供了解决方案,无需修改数据库默认设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天遇到一个问题

要不一批数据里面的一些大写改成小写

改倒是方便

但是因为只能在界面单条单条的改

复核是个问题

而我们数据库权限只有查询

没有太多的权限


开始简单的用like的查询

发现改之前和改之后查询结果一样

查了下文档和百度了下

发现MSSQL的like查询默认是跟随数据库设置的

而数据库建库默认是不区分大小写的...

所以...


然后搜了一些资料

有用正则有改数据库默认设置区分大小写的

而这些都需要数据库的权限

我们都没有...

最后发现一种稍微简单一点的方法

是sql里面显示的声明要区分大小写:

select id,templateName,templateTitle
from htmltemplate(nolock)
where yn=1
and templatehtml collate Chinese_PRC_CS_AS like '%sdf.sdfsdf%'

试了一下

生效

### MySQL 中 LIKE 查询区分大小写的处理方法 在 MySQL 数据库中,默认情况下字符串比较操作(包括 `LIKE`)可能不会严格区分大小写,这取决于字符集和排序规则的设置。为了实现不区分大小写的 `LIKE` 查询,可以采用多种方式。 #### 使用内置函数转换为统一大小写 一种常见做法是在执行匹配前通过 SQL 函数将待查字段以及模式串都转成相同的大写或小写字母形式来进行对比: ```sql SELECT * FROM trees WHERE LOWER(title) LIKE '%elm%'; ``` 此语句会把表 `trees` 的每一行记录中的 `title` 字段值先全部转化为小写再做模糊匹配[^5]。 #### 修改数据库配置项 如果希望整个服务器实例或者特定数据库内的所有查询均保持一致的行为,则可以通过调整全局变量来改变默认行为。对于想要让所有的名称识别都不考虑字母大小的情况,可设置参数 `lower_case_table_names=1` ,但这主要影响的是对象名而非数据内容本身[^3]。 需要注意的是,在生产环境中随意改动此类核心选项可能会带来意想不到的影响,因此建议谨慎评估后再决定是否实施这样的变更措施。 #### 应用 BINARY 运算符强制区分大小写 当确实需要某些场景下维持严格的大小写敏感度时,可以在表达式前面加上 `BINARY` 关键词以指示该次运算应视为二进制级别的精确对照: ```sql SELECT * FROM users WHERE BINARY username = 'JohnDoe'; ``` 不过这里讨论的主题是如何做到“不区分”,所以这个技巧并不适用于当前需求[^1]。 #### 设定合适的字符编码与校对规则 最根本的办法还是在于创建表格之初就指定好恰当的字符集及其对应的 collation 属性。比如使用 utf8mb4_unicode_ci 而不是 _bin 结尾的形式就能确保大多数情况下的忽略大小写特性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值