兼容MySQL中的find_in_set函数

本文介绍如何在瀚高数据库(HighGoDB)中实现MySQL的find_in_set函数功能。通过创建自定义函数,使HighGoDB能够支持在逗号分隔的字符串列表中查找指定字符串,并返回其位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

瀚高数据库

目录
文档用途
详细信息

文档用途
在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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值