可能重复:
您可以拆分/分解 MySQL 查询中的字段吗?
我想在mysql过程中转换phpexplode函数
但是
explode函数不包含长度(我们不知道分隔符在哪个索引上)
并且
在exploded数组上运行一个循环,就像我写的php代码中的循环一样那个爆炸的数组
PHP 代码
$data = 'Computers|Personal Computer|Home Use|Accessories|Mouse|Wireless Mouse';
$categories = explode("|", $data);
for ( $i = 0; $i < sizeof($categories); $i++ ){
$this->insert_category( $categories[$i] );
}
我在 mysql 中使用了下面的函数,但它只返回一个值,但我想要一个数组,这个函数也需要一个特定的索引,在我的情况下是未知的,因为数据将是任何类型的。
mysql
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, '');
我还使用这些函数只是为了使某些事情更接近我的结果,但是这些函数的行为不准确,例如它们没有正确拆分,没有返回正确的索引等,
我正在一个一个地使用以下所有功能,或者不是同时使用所有功能
SET temp2 = substring_index(data_mysql, '|', 2);
SET temp2 = find_in_set('|', data_mysql);
SET temp2 = instr(data_mysql, '|');
SET temp3 = SPLIT_STR(data_mysql, '|', temp2 );
我将mysql过程中的变量声明为
DECLARE data_mysql VARCHAR(200) DEFAULT NULL;
DECLARE temp1 VARCHAR(150) DEFAULT NULL;
DECLARE temp2 VARCHAR(150) DEFAULT NULL;
DECLARE temp3 VARCHAR(150) DEFAULT NULL;