首页 > 数据库 > 国内数据库 > 兼容MySQL中的find_in_set函数
瀚高数据库
在HighGoDB中,通过自定义函数,兼容MySQL中的find_in_set(str,strlist)函数。
FIND_IN_SET(str,strlist)
第一个参数str是要查找的字符串。
第二个参数strlist是要搜索的逗号分隔的字符串列表。
假如字符串str在由N个子链组成的字符串列表strlist中,则返回值的范围在1到N之间,计算从1开始,不是从0开始。
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
CREATE OR replace function generate_subscripts(anyarray,int) RETURNS SETOF int AS $$ begin SELECT generate_series(array_lower($1,$2), array_upper($1,$2)); end $$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION find_in_set(str text, strlist text) RETURNS int AS $$ SELECT i FROM generate_subscripts(string_to_array($2,','),1) g(i) WHERE (string_to_array($2, ','))[i] = $1 UNION ALL SELECT 0 LIMIT 1 $$ LANGUAGE sql STRICT;
highgo=> select find_in_set('123','213,34,123,34,567,464'); find_in_set
-------------
3
(1 row)
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69994931/viewspace-2854261/ ,如需转载,请注明出处,否则将追究法律责任。