关于oracle使用find_in_set函数
一、find_in_set函数概述
find_in_set
函数可以对数据表里面某一项由英文逗号
隔开的的值(字符串)进行检索。
find_in_set(str,strlist),str
:要查询的字符串;strlist
:由英文逗号
隔开的字符串
mysql中自带了find_in_set函数,直接可以使用这个函数;oracle没有这个函数,需要我们手动创建find_in_set函数
二、find_in_set函数如何查询数据
如图所示,表中有一列名为version_type的列,它的值都是由英文逗号隔开的(version_type:1,2,3)字符串组成。
1 | // 在mysql中,我们可以使用find_in_set函数进行精准搜索,如下 |
-
为什么不使用in或like
不使用in的原因:因为使用in时,必须是version_type的列值等于1才能查询出数据;
不使用like的原因:而使用like的话,它的匹配方式更广泛,在检索是只要包含这个字符都会返回,我们需要精确取到1这个值,like会把11、21、111等有1在的值都匹配,故而不能lik -
find_in_set函数 blue
只能搜索逗号隔开的具体的值,比like更精准,必须是1或2或3这样的形式,故而在需要得到包含1的值时find_in_set函数更适合。
三、在oracle中创建find_in_set函数
1 CREATE OR REPLACE FUNCTION FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ',')默认是逗号隔开,也可以替换为其它的字符隔开。如:
p_sep varchar2 := '|'
⚠️:如果是换成其它字符隔开,则查询时需要传入隔开的字符,详细请看
oracle使用方法
1 | CREATE OR REPLACE FUNCTION FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ',') |
四、使用方法
数据示意如下:
1、在MySQL中
使用方法如下:
1 |
|
2、在oracle中
使用方法如下:
1 |
|
1 |
|
借鉴链接
oracle FIND_IN_SET函数
mysql中find_in_set()函数的使用
声明
借鉴部分均注明了原文出处,可在文章的`借鉴链接`处获取原文出处文中若内容有涉及原版权,请邮件联系elvin-chen@qq.com,涉及的相关文章或内容将会及时更改或取消发布
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Elvin!
评论