在mysql中并没有split函数,需要自己写:
1)获得按指定字符分割的字符串的个数:
DELIMITER $$
DROP FUNCTION IF EXISTS `sims`.`func_get_split_string_total`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string_total`(
f_string varchar(1000),f_delimiter varchar(5)
) RETURNS int(11)
BEGIN
declare returnInt int(11);
if length(f_delimiter)=2 then
return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')))/2;
else
return 1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
end if;
END$$
DELIMITER ;
例:func_get_split_string_total('abc||def||gh','||') 结果为3
2)得到第i个分割后的字符串。
DELIMITER $$
DROP FUNCTION IF EXISTS `sims`.`func_get_split_string`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_split_string`(
f_string varchar(1000),f_delimiter varchar(5),f_order int) RETURNS varchar(255) CHARSET utf8
BEGIN
declare result varchar(255) default '';
set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));
return result;
END$$
DELIMITER ;
例如:func_get_split_string('abc||def||gh','||',2) 为def
3) 需求:A表中的一个字段值为1||2, 在select 时要通过和B字典表的关联得到a,b
CREATE DEFINER=`root`@`localhost` FUNCTION `getDictName`(v_str varchar(100)) RETURNS varchar(100) CHARSET utf8
BEGIN
DECLARE i int(4);
DECLARE dictCode varchar(100);
DECLARE dictName varchar(100);
DECLARE returnStr varchar(100);
set i = 1;
set returnStr = '';
if(v_str is null or length(v_str)=0) then
return returnStr;
else
while i<=func_get_split_string_total(v_str,'||')
do
set dictCode = func_get_split_string(v_str,'||',i);
select names into dictName from sims_dd_dict where code = dictCode;
set returnStr = concat(returnStr,',',dictName); -- 这里要用中文的逗号,否则导出EXCEL的时候会串行,因为程序中是以逗号分隔的
set i = i+1;
end while;
set returnStr = subString(returnStr,2);
return returnStr;
end if;
END$$
分享到:
相关推荐
在MySQL数据库中,虽然没有内置的`SPLIT`函数来直接处理字符串分割任务,但可以通过自定义函数或存储过程来实现类似的功能。以下是对标题和描述中提到的三个MySQL函数和过程的详细解释: 1. **函数`func_...
在SQL中,处理字符串时确实不如其他编程语言那样灵活,...以上就是在MySQL中实现类似SPLIT功能的方法,虽然不如某些编程语言直接支持数组那样方便,但通过自定义函数和巧妙的逻辑,我们仍然可以有效地处理分隔字符串。
虽然MySQL的标准库中没有直接提供`split`函数,但可以通过自定义存储过程和函数来实现类似的功能。这里我们将详细讲解如何在MySQL中实现一个用逗号分隔的`split`函数。 首先,我们创建一个存储过程`splitString`,...
`split()`函数则用于根据指定的分隔符将字符串分割成数组。这对于处理CSV数据或者需要拆分字符串的情况非常有用。你还可以通过`limit`参数限制分割出的数组元素数量。 最后,`sql_regcase()`函数是一个不太常见的...
尤其是在与MySQL数据库交互的过程中,理解并熟练应用这些函数能够显著提升开发效率和程序的灵活性。此外,正则表达式的理解和运用也是高级PHP开发者必备的技能之一。希望本文的解析能够帮助读者更深入地了解这些函数...
此外,MySQL 还支持正则表达式函数,如 `ereg`、`ereg_replace`、`eregi`、`eregi_replace`、`split` 和 `sql_regcase`,它们在处理字符串时提供了强大的匹配和替换功能,可以极大地提升数据库查询的灵活性和效率。...
一、函数功能:对字符串进行分隔数组,取指定顺序位置的子字符串,支持左右双向获取,支持...二、函数格式:fn_get_split_val(in_str varchar,in_delimiter varchar,in_order int,in_default varchar) 三、测试用例
同样地,在DB2中使用`TO_DATE`函数转换字符串为日期时间,而在MySQL中则使用`STR_TO_DATE`函数。 ```sql -- DB2 SELECT F_GET_STR_TO_DATE(startDate DATETIME, split_format VARCHAR(25), dateType VARCHAR(3)) --...
在本示例中,我们将深入探讨如何在MySQL中创建一个存储过程,用于将字符串按照指定的分隔符进行拆分,即实现类似JavaScript中的`split()`函数的功能。 首先,我们来看一下提供的存储过程代码: ```sql drop ...
在MySQL中,处理字符串时,有时需要将一个字符串分割成多个部分,这通常在处理以特定字符分隔的数据时出现。本话题主要介绍如何利用存储过程来实现这一功能,涉及的关键知识点包括MySQL的内置函数以及存储过程的创建...
为提高效率,可以考虑使用更高级的全文检索技术,如倒排索引,或者数据库特定的字符串处理函数,如SQL Server的`STRING_SPLIT`或MySQL的`FIND_IN_SET`。 总的来说,`Split`函数是一个强大的工具,能帮助我们处理...
在本文中,我们将深入探讨如何使用Java开发一个串口助手应用程序,该程序能接收来自串行端口的数据并将其解析后存储到MySQL数据库中。首先,我们需要了解串口通信的基本概念,然后学习Java如何处理串口输入,接着是...
最近项目中有很多需要做批量操作的需求,客户端把一组逗号分隔的ID字符串传给数据库,存储过程就需要把它们分割,然后逐个处理。 以往的处理方式有如下几种: 1、在存储过程内写循环,逐个分析字符串中的ID,然后...
1. PHP中的字符串分割函数,`split`函数使用正则表达式将字符串分割成数组,但此函数已废弃,推荐使用`preg_split`。`implode`用于将数组元素组合为一个字符串,`explode`是用指定字符分割字符串成数组,`join`与`...
* 字符串函数:Power Query M 语言的字符串函数用于处理字符串,如 concatenation、split、trim 等。 * 日期函数:Power Query M 语言的日期函数用于处理日期和时间,如 Today、Now、Date.Add 等。 数据访问函数 ...
在这个存储过程中,临时表 `tmp_split` 用于存储通过 `func_splitString` 函数分隔的字符串。 总结,MySQL临时表提供了一种灵活的方式来存储和处理临时数据,它们在处理大量数据和复杂的查询逻辑时尤其有用。临时表...
在本例中,`insert()`函数使用`split()`方法拆分每一行数据,然后将拆分后的数据作为SQL插入语句的参数。 4. **异常处理**: 示例代码中没有涵盖错误处理部分,例如,如果TXT文件格式不正确,或者MySQL数据库连接...