如何在SQL中实现区分大小写的查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SQL中实现区分大小写的查询相关的知识,希望对你有一定的参考价值。

    在创建数据库时,指定要区分大小写,或者后期再做更改也可以alter database dbname  collate chinese_prc_cs_as

    在创建表时,指定要区分大小写,或者后期再做更改也可以 alter table tbname  collate chinese_prc_cs_as

    如果只是想使用一次,不想修改整个表或整个数据库。

    3.1可以在使用时,将查询或使用到的字段,转成二进制形式进行比较就可以了(大小写的二进制形式肯定是不一样的~)

    3.2可以在查询或使用时,指名使用 简体中文做为数据库的查询规则。 指定SQL server的排序规则 Chinese_PRC指的是中国大陆地区,如果是台湾地区则为Chinese_Taiwan CI指定不区分大小写,如果要在查询时区分输入的大小写则改为CS AS指定区分重音,同样如果不需要区分重音,则改为AI COLLATE可以针对整个数据库更改排序规则,也可以单独修改某一个表或者某一个字段的排序规则,指定排序规则很有用,比如用户管理表,需要验证输入的用户名和密码的正确性,一般是要区分大小写的。 使用collate: select * from 表 where 字段='King' collate chinese_prc_cs_as 或者 转换为varbinary select * from 表 where convert(varbinary(1000),字段)=convert(varbinary(1000),'King')

参考技术A 还需注意区分数据库,sqlserver和mysql的语法不一样:
默认都是不区分大小写的,以下为区分大小写的查询方法
SQL Server ->
collate: select * from 表 where 字段='King' collate chinese_prc_cs_as 或者 转换为varbinary select * from 表 where convert(varbinary(1000),字段)=convert(varbinary(1000),'King')
MySQL ->
select * from 表 where binary 字段='King'

我们如何在sql CTE中实现动态查询?

【中文标题】我们如何在sql CTE中实现动态查询?【英文标题】:How can we implement dynamic query in sql CTE? 【发布时间】:2015-04-02 06:08:01 【问题描述】:

如何在sql CTE中实现动态查询?

【问题讨论】:

How do I ask a good question - 这不仅不清楚而且严重无法回答.... 你想要什么..? cte 中的动态查询 ..?问清楚 你为什么要这么做?您要解决的问题是什么?学校作业或只是有人说“在 sql CTE 中实现动态查询”? 【参考方案1】:

使用 CTE 实现动态查询

Declare @query Varchar(100)
Set @query = 'Select * From TableName'

Declare @Result Varchar(200)
Set @Result = ';With T As (' + @query + ') Select * From T'
Exec(@Result)

【讨论】:

这是一个非常特定于产品的答案。注意没有指定数据库!

以上是关于如何在SQL中实现区分大小写的查询的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 上进行 SQL 区分大小写的字符串比较?

mysql模糊查询区分大小写

如何使用 Sql Server XQuery 搜索不区分大小写的单词?

Sequelize - 不区分大小写

Oracle查询语句区分大小写吗?

sql语句查询字母字段时不区分大小写