下面是我的问题
我有字符串“1,2,3,4,5”。我想拆分值并放入一个临时表但我想插入1个位置,我的意思是输出将是
N°1 | N°2
---------
1 | 2
2 | 3
3 | 4
4 | 5
我希望有人解决我的问题。谢谢!
答案 0 :(得分:2)
对于一个简单的表格,如下面的语法
创建的表格CREATE TABLE `demo2` (
`no1` int(11) NOT NULL,
`no2` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
您可以尝试使用下面的存储过程。
为每个插入的字符串中的每个值添加+1的示例
CREATE PROCEDURE `dowhile`(IN `s1` VARCHAR(255))
BEGIN
SET @length = CHAR_LENGTH(`s1`);
SET @counter = 1;
WHILE @counter <= @length DO
SET @char = SUBSTRING(`s1`, @counter, 1);
IF STRCMP(@char, ",") <> 0 THEN
INSERT INTO `demo2` (`no1`,`no2`) VALUES (@char,@char+1);
END IF;
SET @counter = @counter + 1;
END WHILE;
END
在字段
no1
中添加nth
元素并在no2
中添加nth+1
字符串中的CREATE PROCEDURE `dowhile`(IN `s1` VARCHAR(255)) BEGIN SET @length = CHAR_LENGTH(`s1`); SET @counter = 1; WHILE @counter <= @length DO SET @next_el_counter = @counter + 2; SET @char = SUBSTRING(`s1`, @counter, 1); IF STRCMP(@char, ",") <> 0 THEN INSERT INTO `demo2` (`no1`,`no2`) VALUES (@char,SUBSTRING(`s1`, @next_el_counter, 1)); END IF; SET @counter = @counter + 1; END WHILE; END
运算元素(不包括逗号)
CALL `dowhile`('1,2,3,4,5');
别忘了给它打电话......
bitstring1 = "00001111";
bitstring2 = "11110000";
答案 1 :(得分:1)
首先,我将要求您浏览this LINK链接,以便实现在列中存储分隔列表的缺点。
无论如何,如果您使用MySql完成此任务,则需要使用过程和函数执行此操作,如下所示:
第1步:使用指定位置的分隔符,
为分割数据创建功能。
CREATE FUNCTION SPLIT_STR
(
x VARCHAR(255),
delim VARCHAR(12),
pos INT
)
RETURNS VARCHAR(255)
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
delim, '');
现在,上述函数将仅为给定位置分割数据。为了拆分整个字符串,我们需要迭代这个函数。这是我们的第2步。
第2步:创建过程以迭代上述功能;
CREATE PROCEDURE ABC(IN fullstr varchar(1000))
BEGIN
DECLARE a INT Default 0;
DECLARE str VARCHAR(255);
DECLARE prev VARCHAR(255);
simple_loop: LOOP
SET a=a+1;
IF a=1 THEN
SET prev=SPLIT_STR(fullstr,",",a);
SET a=a+1;
END IF;
SET str=SPLIT_STR(fullstr,",",a);
IF str='' THEN
LEAVE simple_loop;
END IF;
#Do Inserts into temp table here with str going into the row
insert into t1 values (prev,str);
SET prev=str;
END LOOP simple_loop;
第3步:致电程序:
call abc(columnName);
第4步:从temp
表中获取数据:
select *
from temp;
希望它有所帮助!