现有一段字符串,如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数据库中,有时我们需要处理存储在单一字段内的多个值,这时就涉及到字符串的分割操作。这个场景在处理如CSV格式的数据或者存储一串相关但独立的信息时尤为常见。本篇将详细介绍MySQL中的字符串分割技术及其...
本话题主要介绍如何利用存储过程来实现这一功能,涉及的关键知识点包括MySQL的内置函数以及存储过程的创建与调用。 1. **REVERSE() 函数**: - `REVERSE(str)` 是一个MySQL字符串函数,它接收一个字符串参数`str`...
利用mysql中提供的所有函数,组成的一个存储过程。此存储过程主要是将传入的字符串分割为多个值,单个列。
1. 字符串处理函数的使用,如分割字符串、提取子字符串等。 2. 存储过程的编写,包括接收和处理分隔字符串的参数。 3. 数据库系统的调试方法,如设置断点、查看变量值和执行计划。 4. 如何利用数据库管理工具进行...
在使用Sqoop与MySQL交互前,需要在`$SQOOP_HOME/conf/sqoop-site.xml`中配置相关的数据库连接参数,如`sqoop.jdbc.driver`(应设置为`com.mysql.jdbc.Driver`)、`sqoop.connection.url`(MySQL的JDBC连接字符串)、...
在Kotlin中,我们可以使用`BufferedReader`类来逐行读取文本文件,然后利用字符串操作方法如`split()`来分割和解析每行数据。一旦数据被正确解析,可以将它们插入到一个SQL语句模板中,然后将这些语句写入一个新的....
在MySQL数据库中,LIKE查询是常用的模糊匹配方法,但当处理大数据量时,尤其是涉及到通配符(如%)的LIKE查询,其性能问题不容忽视。这类查询往往会导致全表扫描,消耗大量的CPU资源和时间,进而拖慢整体系统的响应...
MySQL表达式是用于构建查询或数据操作的语句,可按值类型分为字符串类型、数值类型和日期时间类型。表达式还可以按形式分为单一表达式和复合表达式。复合表达式可以进一步细分为行表达式、标量表达式和表表达式。在...
- 讲解了两种字符串类型的区别:`char`是固定长度的,而`varchar`则是可变长度的,包括它们的使用场景和性能差异。 - **3.2.2 text和blob** - 对比了`text`和`blob`这两种用于存储大文本和二进制数据的数据类型,...
定义字符串变量`$strChars`存储字符画内容,设置默认字体`$strFont`,并使用`str_split()`函数将字符集分割到数组中。同时,初始化其他与参数相关的变量,如缩放比例`$iScale`、颜色开关`$bColor`、透明度`$bAlpha`...
- **数据类型**:MySQL支持多种数据类型,包括数值类型、字符串类型、日期时间类型等。 - **表的创建与修改**:使用`CREATE TABLE`和`ALTER TABLE`命令创建和修改表结构。 - **数据操作**:包括插入(INSERT)、更新...
不同的数据列可以具有不同的数据类型,如整数、字符串、日期时间等。 - **SQL语句**:包括但不限于CREATE TABLE(创建表)、INSERT INTO(插入数据)、SELECT(查询数据)、UPDATE(更新数据)以及DELETE FROM(删除...
然而,MySQL提供了一个名为`FIND_IN_SET`的函数,专门用于在逗号分隔的字符串列表中查找指定的子串。这个函数大大提高了查询效率,如下所示: ```sql SELECT * FROM content WHERE FIND_IN_SET('2', tags) AND id ...
- MySQL是一种SQL(结构化查询语言)数据库,支持多种数据类型,如数值、字符串、日期时间等,以及复杂的查询和事务处理。 - 它使用客户端-服务器模型,允许远程或本地连接到数据库服务器进行数据操作和管理。 - ...
在MySQL中,数字类型的选择对于确保数据的准确性和优化存储空间至关重要。特别是对于自增列(如`AUTO_INCREMENT`),如果不合理设置初始值、增量或范围限制,则可能导致数据混乱或丢失等问题。例如,当表中的自增...
- 字符串函数如SUBSTRING、REVERSE。 - 日期函数如NOW、CURRENT_DATE。 - 聚合函数如COUNT、SUM、AVG、MAX、MIN。 8. **NOW()与CURRENT_DATE()的区别**: NOW()返回当前的日期和时间,而CURRENT_DATE()仅返回...
- 尽可能用枚举或整数代替字符串类型,以减少比较和存储的开销。 - 优先选择TIMESTAMP而非DATETIME,因为TIMESTAMP在某些场景下更高效。 - 限制表的字段数量,通常建议不超过20个,以降低查询复杂性。 - 避免...