我是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;