迭代替换子串的SQL函数

时间:2013-12-06 08:28:03

标签: mysql sql

我是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, ',');

1 个答案:

答案 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;