`
xzuse
  • 浏览: 43479 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

(转)MySQL中利用存储过程分割字符串的方法

阅读更多
现有一段字符串,如apple,banana,orange,pears,grape,要把它按照逗号(,)分割成: apple banana orange pears grape 然后使用where in()方法可以查询。 1、具体函数: # 函数:func_split_TotalLength DELIMITER $$ DROP function IF EXISTS `func_split_TotalLength` $$ CREATE DEFINER=`root`@`%` FUNCTION `func_split_TotalLength` (f_string varchar(1000),f_delimiter varchar(5)) RETURNS int(11) BEGIN # 计算传入字符串的总length return 1+(length(f_string) - length(replace(f_string,f_delimiter,''))); END$$ DELIMITER; # 函数:func_split DELIMITER $$ DROP function IF EXISTS `func_split` $$ CREATE DEFINER=`root`@`%` FUNCTION `func_split` (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; # 存储过程:splitString DELIMITER $$ DROP PROCEDURE IF EXISTS `splitString` $$ CREATE PROCEDURE `splitString` (IN f_string varchar(1000),IN f_delimiter varchar(5)) BEGIN # 拆分结果 declare cnt int default 0; declare i int default 0; set cnt = func_split_TotalLength(f_string,f_delimiter); DROP TABLE IF EXISTS `tmp_split`; create temporary table `tmp_split` (`status` varchar(128) not null) DEFAULT CHARSET=utf8; while i call splitString("apple,banana,orange,pears,grape",","); select * from tmp_split; Query OK, 1 row affected +--------+ | status | +--------+ | apple | | banana | | orange | | pears | | grape | +--------+ 5 rows in set mysql> 3、应用where in()查询 # 先传入字符串,分割后保存在临时表tmp_split中 call splitString("apple,banana,orange,pears,grape",","); # 将查询的结果作为其他查询的条件来使用 select * from fruit where in(select * from tmp_split);
分享到:
评论

相关推荐

    mysql分割字符串

    在MySQL数据库中,有时我们需要处理存储在单一字段内的多个值,这时就涉及到字符串的分割操作。这个场景在处理如CSV格式的数据或者存储一串相关但独立的信息时尤为常见。本篇将详细介绍MySQL中的字符串分割技术及其...

    Mysql通过存储过程分割字符串为数组

    本话题主要介绍如何利用存储过程来实现这一功能,涉及的关键知识点包括MySQL的内置函数以及存储过程的创建与调用。 1. **REVERSE() 函数**: - `REVERSE(str)` 是一个MySQL字符串函数,它接收一个字符串参数`str`...

    mysql将字符串分割成多列值

    利用mysql中提供的所有函数,组成的一个存储过程。此存储过程主要是将传入的字符串分割为多个值,单个列。

    一个字符串分隔多个参数存储过程调试

    1. 字符串处理函数的使用,如分割字符串、提取子字符串等。 2. 存储过程的编写,包括接收和处理分隔字符串的参数。 3. 数据库系统的调试方法,如设置断点、查看变量值和执行计划。 4. 如何利用数据库管理工具进行...

    mysql-connector-java-5.1.10-bin.jar包下载

    在使用Sqoop与MySQL交互前,需要在`$SQOOP_HOME/conf/sqoop-site.xml`中配置相关的数据库连接参数,如`sqoop.jdbc.driver`(应设置为`com.mysql.jdbc.Driver`)、`sqoop.connection.url`(MySQL的JDBC连接字符串)、...

    Android-将中华新华字典数据转换到可被导入到MySQL的sql文件

    在Kotlin中,我们可以使用`BufferedReader`类来逐行读取文本文件,然后利用字符串操作方法如`split()`来分割和解析每行数据。一旦数据被正确解析,可以将它们插入到一个SQL语句模板中,然后将这些语句写入一个新的....

    解决MySql大数据Like查询慢的问题

    在MySQL数据库中,LIKE查询是常用的模糊匹配方法,但当处理大数据量时,尤其是涉及到通配符(如%)的LIKE查询,其性能问题不容忽视。这类查询往往会导致全表扫描,消耗大量的CPU资源和时间,进而拖慢整体系统的响应...

    mysql第七章.pdf

    MySQL表达式是用于构建查询或数据操作的语句,可按值类型分为字符串类型、数值类型和日期时间类型。表达式还可以按形式分为单一表达式和复合表达式。复合表达式可以进一步细分为行表达式、标量表达式和表表达式。在...

    网易技术部MySQL中文资料

    - 讲解了两种字符串类型的区别:`char`是固定长度的,而`varchar`则是可变长度的,包括它们的使用场景和性能差异。 - **3.2.2 text和blob** - 对比了`text`和`blob`这两种用于存储大文本和二进制数据的数据类型,...

    PHP实现图片转字符画1

    定义字符串变量`$strChars`存储字符画内容,设置默认字体`$strFont`,并使用`str_split()`函数将字符集分割到数组中。同时,初始化其他与参数相关的变量,如缩放比例`$iScale`、颜色开关`$bColor`、透明度`$bAlpha`...

    \MySQL开发人员的SQL参考手册

    - **数据类型**:MySQL支持多种数据类型,包括数值类型、字符串类型、日期时间类型等。 - **表的创建与修改**:使用`CREATE TABLE`和`ALTER TABLE`命令创建和修改表结构。 - **数据操作**:包括插入(INSERT)、更新...

    MySQL.and.Java.Developers.Guide.pdf

    不同的数据列可以具有不同的数据类型,如整数、字符串、日期时间等。 - **SQL语句**:包括但不限于CREATE TABLE(创建表)、INSERT INTO(插入数据)、SELECT(查询数据)、UPDATE(更新数据)以及DELETE FROM(删除...

    在MySQL字段中使用逗号分隔符的方法分享

    然而,MySQL提供了一个名为`FIND_IN_SET`的函数,专门用于在逗号分隔的字符串列表中查找指定的子串。这个函数大大提高了查询效率,如下所示: ```sql SELECT * FROM content WHERE FIND_IN_SET('2', tags) AND id ...

    mysql5.5_for_widows

    - MySQL是一种SQL(结构化查询语言)数据库,支持多种数据类型,如数值、字符串、日期时间等,以及复杂的查询和事务处理。 - 它使用客户端-服务器模型,允许远程或本地连接到数据库服务器进行数据操作和管理。 - ...

    MySQL必知必会常识技巧实战宝典

    在MySQL中,数字类型的选择对于确保数据的准确性和优化存储空间至关重要。特别是对于自增列(如`AUTO_INCREMENT`),如果不合理设置初始值、增量或范围限制,则可能导致数据混乱或丢失等问题。例如,当表中的自增...

    MySQL面试题-BAT的MySQL面试题

    - 字符串函数如SUBSTRING、REVERSE。 - 日期函数如NOW、CURRENT_DATE。 - 聚合函数如COUNT、SUM、AVG、MAX、MIN。 8. **NOW()与CURRENT_DATE()的区别**: NOW()返回当前的日期和时间,而CURRENT_DATE()仅返回...

    MySQL数据库优化指南.docx

    - 尽可能用枚举或整数代替字符串类型,以减少比较和存储的开销。 - 优先选择TIMESTAMP而非DATETIME,因为TIMESTAMP在某些场景下更高效。 - 限制表的字段数量,通常建议不超过20个,以降低查询复杂性。 - 避免...

Global site tag (gtag.js) - Google Analytics