`

mysql 中使用split

阅读更多

      在mysql中好像并没有提供split的函数,即使有那么该如何接收返回值呢?数组吗.

      反正我只能间接的实现,如下:

DELIMITER $$;

DROP FUNCTION IF EXISTS `func_getSplitCount`$$

CREATE FUNCTION `func_getSplitCount`(
	f_string varchar(1000),f_delimit varchar(5)
) RETURNS int(11)
BEGIN
	return 1+(length(f_string) - length(replace(f_string,f_delimit,'')));
END$$

DELIMITER ;$$

 

DELIMITER $$;

DROP FUNCTION IF EXISTS `func_getSplitString`$$

CREATE FUNCTION `func_getSplitString`(
	f_string varchar(1000),f_delimit varchar(5),f_order int
) RETURNS varchar(255)
BEGIN
  declare result varchar(255) default '';
  set result = reverse(substring_index(reverse(substring_index(f_string,f_delimit,f_order)),f_delimit,1));
  return result;
END$$

DELIMITER ;$$

 

-- 以下是利用这个split的一个片段

....
set loopCount = func_getSplitCount(orString,splitDelimit);
	
WHILE(loopCount > 0) DO
	set temp_orWhere = concat(temp_orWhere,' or cIdxMapCd = \'',func_getSplitString(orString,splitDelimit,loopCount),'\'');
	set loopCount = loopCount - 1;
END WHILE;



....

 恩就是这样,至少我没有更好的办法.
 利用length函数和replace计算出split的个数,然后利用substring_index和reverse函数取出指定位置的内容,最后利用循环,不断的去拿.

分享到:
评论
3 楼 moistrot 2010-10-26  
postgres牛逼!postgres是好多商业数据库的前身!
2 楼 mislay 2010-07-27  
e.... 估计名字好听吧
1 楼 pig345 2010-07-15  
mysql 存储过程 function 有个大问题——不支持返回游标(或数组)!另外function里面还不能使用动态SQL!这两点,基本上把正常的function功能给废了!

另外没有split函数(这更加雪上加霜,导致连用function返回长字符串传递数组这种绕弯实现都成为不可能——返回了不能用函数套函数的方式分割成数组,就不能直接写在WHERE里面,基本废了!)

我感觉MySQL始终就不是一个完整的数据库,真不明白为什么还这么流行???难道大家都是简单地把MySQL当平板文件+SQL引擎使用?
反之,几年前功能就已经堪比商业数据库的postgres在功能不断完善的同时,确远没有mysql流行!
(当年mysql3就不支持一些数据库的基本功能(事务、存储过程)、现在快到6了,号称全都支持了,不过明显功能缩水!相比另外一个免费开源数据库postgres明显是个半残)

相关推荐

    mysql函数split功能实现

    在MySQL数据库中,`SPLIT`函数并不是内置的函数,但我们可以使用其他方式来实现类似的功能,即字符串分隔。通常,我们用`SUBSTRING_INDEX()`或`REGEXP_REPLACE()`结合`FIND_IN_SET()`来分割字符串。这些函数在处理...

    MySQL里实现类似SPLIT的分割字符串的函数

    在SQL中,处理字符串时确实不如其他编程语言那样灵活,...以上就是在MySQL中实现类似SPLIT功能的方法,虽然不如某些编程语言直接支持数组那样方便,但通过自定义函数和巧妙的逻辑,我们仍然可以有效地处理分隔字符串。

    mysql split函数用逗号分隔的实现

    在MySQL中,有时候我们需要将一个字符串按照特定的分隔符拆分成多个部分,这就需要用到`split`功能。虽然MySQL的标准库中没有直接提供`split`函数,但可以通过自定义存储过程和函数来实现类似的功能。这里我们将详细...

    mysql存储过程实现split示例

    在本示例中,我们将深入探讨如何在MySQL中创建一个存储过程,用于将字符串按照指定的分隔符进行拆分,即实现类似JavaScript中的`split()`函数的功能。 首先,我们来看一下提供的存储过程代码: ```sql drop ...

    db2迁移到mysql.docx

    同样地,在DB2中使用`TO_DATE`函数转换字符串为日期时间,而在MySQL中则使用`STR_TO_DATE`函数。 ```sql -- DB2 SELECT F_GET_STR_TO_DATE(startDate DATETIME, split_format VARCHAR(25), dateType VARCHAR(3)) --...

    JAVA串口助手接收数据并解析数据存入MySQL数据库中

    在本文中,我们将深入探讨如何使用Java开发一个串口助手应用程序,该程序能接收来自串行端口的数据并将其解析后存储到MySQL数据库中。首先,我们需要了解串口通信的基本概念,然后学习Java如何处理串口输入,接着是...

    使用sqoop抽取mysql数据

    在“使用sqoop抽取mysql数据”的场景中,我们需要了解以下关键知识点: 1. ** Sqoop 安装与配置**:首先,你需要在 Hadoop 集群或本地环境中安装 Sqoop,并配置相关的数据库连接信息,包括 JDBC 驱动、数据库服务器...

    c#备份还原MySql数据库

    在C#中,我们可以使用`MySqlCommand`类来执行这些操作。例如,以下代码展示了如何创建一个备份脚本: ```csharp using MySql.Data.MySqlClient; string backupCommand = "mysqldump -u [username] -p[password] ...

    7、NIFI综合应用场景-将mysql查询出的json数据转换成txt后存储至HDFS中

    1. **数据获取**:使用`QueryDatabaseTable`或`ExecuteSQL`处理器从MySQL中提取JSON格式的数据。这些处理器允许我们编写SQL查询,以选择需要的数据。 2. **数据转换**:接收到JSON数据后,使用`ConvertJSONToText`...

    java算法,从txt文件中读取数据录入mysql

    在Java编程中,将数据从TXT文件读取并导入MySQL数据库是一项常见的任务,涉及到文件操作、字符串处理以及数据库交互等多个知识点。以下是对这些关键概念的详细解释: 1. **文件操作**:`FileOper.java`可能包含了对...

    Ruby-Split基于Rack的AB测试框架

    Split支持多种存储器,包括内存存储、数据库存储(如Redis、MySQL)等。选择合适的存储器取决于你的应用规模和需求。 在定义实验时,你可以使用Split提供的助手方法,如`split_test`,它接受特征名和一个哈希,哈希...

    mysql-split-horizon.rar java

    垂直拆分就是要把表按模块划分到不同数据库表中(当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的。当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网站不断...

    2、sqoop导入(RMDB-mysql、sybase到HDFS-hive)

    使用以下命令将 MySQL 中的 `person` 表导入到 HDFS 中的 `/test` 目录下: ```bash # 删除已存在的目标目录,如果有的话 sqoop import --connect jdbc:mysql://<hostname>:<port>/<database> --username ...

    mysql-router-8.0.20-winx64.zip

    在实际应用中,MySQL Router可以与其他MySQL产品,如InnoDB Cluster、MySQL Replication等配合使用,构建高可用、可扩展的数据库集群。通过持续监控和调整路由策略,可以进一步优化数据库系统的性能和稳定性。 总结...

    java备份与恢复mysql数据库源码

    在Java中与MySQL交互,我们通常会使用JDBC(Java Database Connectivity)API。JDBC提供了一种标准的方式来连接和操作数据库。首先,你需要在项目中引入MySQL的JDBC驱动,例如通过Maven或Gradle添加对应的依赖。 接...

    mysql临时表用法分析【查询结果可存在临时表中】

    如果你需要从现有表中复制数据,可以使用 `SELECT ... INTO` 语句,但MySQL不支持直接将查询结果存入临时表,所以通常采用 `CREATE TABLE AS SELECT` 或 `INSERT INTO ... SELECT` 的方式: ```sql -- 创建临时表并...

Global site tag (gtag.js) - Google Analytics