我是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, ',');
答案 0 :(得分:1)
在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;