GBase 8s 自定义 find_in_set函数
find_in_set函数
GBase 8s 无内置 find_in_set 函数。mysql迁移至 GBase 8s ,如需使用此函数,可自定义实现。 GBase 8s 支持通过 C 语言或 JAVA 创建自定义例程,或是通过存储过程实现。
以下自定义存储过程出自大神 liaosnet 出自:https://gbasedbt.com/index.php/archives/136/
create function find_in_set(str varchar(255),strlist lvarchar(10000)) returns int; define currp int; -- 当前位置 define lastp int; -- 上次位置 define sepnum int; define strlen int; define strtmp lvarchar(10000); let lastp = 1; let sepnum = 0; let strtmp = strlist || ","; -- 追加一个分隔符, let strlen = length(strtmp); FOR currp = 1 TO strlen IF substr(strtmp,currp,1) = , THEN let sepnum = sepnum + 1; -- IF substr(strtmp,lastp,currp - lastp) = str THEN RETURN sepnum; END IF; let lastp = currp + 1; END IF; END FOR; RETURN 0; end function;
示例:
select find_in_set(南大,南大通用,天津南大通用,南大,南大通用北京,广东南大通用) from dual; |(expression) | |-------------| |3 |