数仓如何设置大小写不敏感函数

Posted 华为云开发者社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数仓如何设置大小写不敏感函数相关的知识,希望对你有一定的参考价值。

本文分享自华为云社区《GaussDB(DWS) 大小写不敏感函数》,作者: 积少成多 。

大小写不敏感函数是指入参忽略大小写的函数,此类函数的主要应用场景是字符串的查询。是否大小写敏感会影响字符串查询的结果。

涉及到字符串查询的函数有locate函数、position函数、strpos函数。locate函数返回字符串中子串第一次出现的位置。函数有两种参数接收方式:

  1. 输入被查询子串和查询字符串,不包含查询起始位置,默认从1开始。
  2. 输入被查询子串和查询字符串以及查询初始位置。

若能查询到子串,则返回其第一次出现的位置索引。若子串不在字符串中,返回0。

position函数和strpos函数与locate函数功能相近,区别在于函数入参和使用形式。

这些字符串处理函数是兼容mysql中的字符串处理函数。而MySQL的字符串处理函数在

MySQL默认情况下,是大小写不敏感的,也就是说入参忽略大小写情况进行查询,而DWS默认是大小写敏感的。

eg:select locate(‘pos’, ‘postest’), locate(‘Pos’, ‘postest’);
DWS结果:

locatelocate
10

MySQL结果:

locatelocate
11

2. 相关GUC参数

在MySQL中是通过底层设计实现入参大小写不敏感的,但在DWS的MySQL兼容性模式下,我们是通过设置GUC参数:SET behavior_compat_options=‘case_insensitive’,可使这些字符串处理函数入参大小写不敏感,兼容MySQL场景。

3. 结果展示

locate:

strpos:

position:

根据结果可以看出,通过设置GUC参数达到了预期入参字符大小写不敏感的目的。但是目前比较局限,无法通过内核全局设置,使所有入参都能达到大小写不敏感的目的。

想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~

点击关注,第一时间了解华为云新鲜技术~​

以上是关于数仓如何设置大小写不敏感函数的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL如何设置大小写敏感

数仓在线运维:如何进行在线增删CN?

数仓性能调优:如何进行函数下推

mysql数据库如何设置表名大小写不敏感?

MYSQL如何设置大小写敏感

解密数仓高可用failover流程