我是mysql函数的新手,我有一串用逗号分隔的整数,

x = '14,42,36,2,56,23,...'


我想创建一个删除第一个i整数的函数。

我有一个仅对第一个整数起作用的函数:

DROP FUNCTION IF EXISTS SPLIT_STR;
CREATE FUNCTION SPLIT_STR(x VARCHAR(20000), delim VARCHAR(1), pos INT)
RETURNS VARCHAR(2000)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos), LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1), delim, ',');

最佳答案

在SQL中使用分隔符分隔的字符串通常不是一个好主意。希望您的问题与Jaywalker反模式无关(即在一列中包含多个值)。

但是,在您的特定情况下,可以通过以下方法解决:

-- delete @count integers from start
SET @count = 3;
SET @data  = '14,42,36,2,56,23';
SET @delit = ',';
SELECT SUBSTRING(@data, CHAR_LENGTH(SUBSTRING_INDEX(@data, @delim, @count))+2);


-或通过一个查询,如下所示:

SELECT
  SUBSTRING(@data, CHAR_LENGTH(SUBSTRING_INDEX(@data, @delim, @count))+2)
FROM
  (SELECT @data:='14,42,36,2,56,23', @count:=3, @delim:=',') AS init;

10-06 06:11