打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PostgreSQL - 正则函数regexp_like

在 Oracle 中 regexp_like 只能用于条件表达式,和 like 类似;而在 PostgreSQL 没有regexp_like 函数;与之等价的函数有 regexp_match

一、regexp_match

regexp_match(string, pattern[, flags ])函数返回一个从匹配POSIX正则表达式模式中获取的所有子串结果的text数组。参数flags是一个可选的text字符串,含有0或者更多单字母标记来改变函数行为。标记g导致查找字符串中的每个匹配,而不仅是第一个,每个匹配返回一行

示例:

lottu=> select regexp_match('Abcde1','a[a-z]+');
 regexp_match 
--------------
 
(1 row)
lottu=> select regexp_match('Abcde1','a[a-z]+', 'i');
 regexp_match 
--------------
 {Abcde}
(1 row)
lottu=> select regexp_match('Abcde1','A[a-z]+');
 regexp_match 
--------------
 {Abcde}
(1 row)

二、 regexp_like

若觉得使用regexp_match不舒适的;根据上面 regexp_match 函数;构建出 PostgreSQL;

CREATE OR REPLACE FUNCTION "lottu"."regexp_like"("regexp_var" text, "pattern" text)
  RETURNS "pg_catalog"."bool" AS $BODY$
    /***********************************************************
     名称: regexp_like
     功能描述:构建regexp_like函数
     修订记录:
     版本号 编辑时间 编辑人 修改描述
     ***********************************************************/
DECLARE
    var text := regexp_var;
    v_parttern text := pattern;
    vc_result boolean := FALSE;
BEGIN
    IF (regexp_match(var, v_parttern) IS NOT NULL) THEN
        vc_result := TRUE;
    END IF;
    RETURN vc_result;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
CREATE OR REPLACE FUNCTION regexp_like(regexp_var text, pattern text, match_parameter text)
  RETURNS pg_catalog.bool AS $BODY$
    /***********************************************************
     名称: regexp_like
     功能描述:构建regexp_like函数
     修订记录:
     版本号 编辑时间 编辑人 修改描述
     ***********************************************************/
DECLARE
    var text := regexp_var;
	v_parttern text := pattern;
	v_math text := match_parameter
    vc_result boolean := FALSE;
BEGIN
    IF (regexp_match(var, v_parttern, v_math) IS NOT NULL) THEN
        vc_result := TRUE;
    END IF;
    RETURN vc_result;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;

示例

lottu=> select regexp_like('Abcde1','a[a-z]+');
 regexp_like 
-------------
 f
(1 row)
lottu=> select regexp_like('Abcde1','a[a-z]+', 'i');
 regexp_like 
-------------
 t
(1 row)
lottu=> select regexp_like('Abcde1','A[a-z]+');
 regexp_like 
-------------
 t
(1 row)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel用得好那是神器,用不好就只是个电子表格
Excel公式大全(非常难得)
Nodejs正则表达式函数之match、test、exec、search、split、replace使用详解 | 微学客
VC中的正则表达式使用
HTML5本地存储之Database Storage应用介绍
JS模板实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服