相容MySQL中的find_in_set函式

瀚高PG實驗室發表於2022-01-27

瀚高資料庫

目錄
文件用途

在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)











來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994931/viewspace-2854261/,如需轉載,請註明出處,否則將追究法律責任。

相關文章