6

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

 2 years ago
source link: https://juejin.cn/post/7078863380198457358
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

1. 大小写不敏感函数

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

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

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

2.输入被查询子串和查询字符串以及查询初始位置。

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

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

这些字符串处理函数是兼容MySQL中的字符串处理函数。而MySQL的字符串处理函数在MySQL默认情况下,是大小写不敏感的,也就是说入参忽略大小写情况进行查询,而DWS默认是大小写敏感的。

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

DWS结果:

locatelocate10

MySQL结果:

locatelocate11

2. 相关GUC参数

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

image.png

3. 结果展示

locate:

image.png strpos:

image.png position:

image.png

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK