瀚高数据库
目录
文档用途
详细信息
文档用途
在HighGoDB中,通过自定义函数,兼容MySQL中的find_in_set(str,strlist)函数。
详细信息
MySQL中的find_in_set函数
语法
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
HighGoDB兼容
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)