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 |
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)