如何在 MySQL 中使用 SUBSTRING_INDEX

说白了,MySQL中的SUBSTRING_INDEX函数其实很简单。
它就像一把钥匙,可以帮助你从丝线的海洋中取出你想要的珍珠。
我们先来说说最重要的事情。
该函数的基本功能是通过分隔符来分隔字符串,然后提取出你想要的子字符串。
比如我们去年跑的项目中,需要从URL中提取域名,所以就使用了这个函数。
数据量约为3 000条,处理效率非常高。

还有一点就是这个功能的使用也非常灵活。
例如,要获取文件扩展名,可以使用负数从右向左提取。
另一个非常重要的细节是中断的处理。
MySQL默认区分大小写,因此您需要确保您的分隔符与字符串中的分隔符一致,否则可能会得到意外的结果。

一开始我以为这个函数只能处理简单的选择器,后来发现错了。
它还可以处理重复的选择器。
很多人没有注意到这一点。
而且,性能也是使用该功能时需要考虑的因素。
如果在大表中使用,建议在str列上创建索引,这样可能会提高查询效率。

最后,我想提醒您一个容易犯的错误,那就是不要忽视与其他数据库的比较。
例如,在SQLServer中,需要组合几个函数来实现相似的功能。
因此,在使用SUBSTRING_INDEX之前,首先要了解自己的环境和数据库的特点,这样才能更好地使用这个工具。

我认为值得尝试将其与其他函数一起使用,例如 CONCAT 和 TRIM,它们可以进一步处理结果并使数据清理和提取更加高效。

如何在MySQL中使用SUBSTRING()函数进行字符串的精确截取和按关键字分割?

嗯,你提到的 MySQL SUBSTRING 函数确实非常实用,但上次我做项目时它几乎让我困惑。
你的总结很清楚。
请让我解释一下我的理解。

比如我2 02 3 年在上海做那个电商项目的时候,就大量使用了LEFT函数。
当时我们必须把产品描述的前2 00个字符剪下来并显示在列表页面上。
只需使用 SELECT LEFT(product_desc, 2 00) 作为产品预览。
我用过很多次了,非常方便。

但是,有一个问题。
也就是说,MySQL 索引对于 LEFT 函数来说有点特殊。
我之前忘记检查文档,查询需要很长时间才能运行,而且效率低得离谱。
后来了解到MySQL允许像LEFT(product_desc, 1 00)这样的索引,但是如果写成LEFT(product_desc, 2 00rand())的话基本没什么用,数据库会直接扫描全表。
因此,在使用时应注意这一点。

从右侧截取的 RIGHT 函数很少使用,因此不太好记。
但是,如果内容特别长(例如 5 000 个字符),您提到的 SELECT RIGHT(content, 2 00) AS 摘要会返回最后 2 00 个字符。
这在查看日志和消息摘要时非常有用。

最让我困扰的是 SUBSTRING 参数。
2 02 3 年5 月在北京调试报表函数时,写了一条SELECT SUBSTRING(order_date, 1 , 1 0) AS date FROM order。
我想截取日期部分,但是返回了一堆乱码。
后来发现这是默认字符集的问题,只好改成 SELECT SUBSTRING (order_date USING utf8 mb4 , 1 , 1 0)。
因此,截取字符串时不应忽略字符集。

我使用了负位置函数。
例如,您可能需要拦截 URL 的最后部分并使用 SELECT SUBSTRING(url, -1 0) AS token FROM 链接直接检索令牌。
这比使用 REVERSE+SUBSTRING 组合要容易得多。

我也经常使用 substring_index 函数。
去年我在成都做那个社交项目时,我用它来解析用户输入的标签。
例如,SELECT SUBSTRING_INDEX(input, ' ', -1 ) AS last_word FROM user_input 可以直接检索最后一个单词。
该函数解析分隔符的速度比正则表达式快得多。

您提到的用例非常典型。
但我有一个建议。
使用 substring_index 时,您需要注意分隔符(如果存在)。
否则,MySQL 返回整个字符串。
我以前也被这个骗过。
用户输入了一个空格,但是直接返回了全部内容。
最好添加像 SELECT IF(SUBSTRING_INDEX(input, ' ', -1 ) = '', 'empty', SUBSTRING_INDEX(input, ' ', -1 )) AS last_word 这样的决定。

无论如何,我明白了。
这些功能可以为您节省大量精力,但它们需要您注意细节。

【mysql】字符串截取函数substring_index

substring_index 是一个用于分割字符串的 MySQL 函数。
粗略地说,这意味着切断分隔符处的字符串。

例如,个人资料字段显示“1 8 0 厘米,7 5 公斤,2 7 岁,男性”。
取值“2 7 ”。

只需使用 substring_index(profile,'=',3 )。
结果:“1 8 0厘米,7 5 公斤,2 7 ”
如果分隔符是逗号,请使用 substring_index(profile,',',3 )。

我上周刚刚处理了类似的请求。
客户需要选择他们的年龄。
数据:“3 0,男性,1 .7 5 ”
使用 substring_index(profile,',',3 ) ,结果将是“3 0,男性”。
如果你再把它剪到右边,就会显示你的年龄。

你试试这个功能。
你用得越多,它就会变得越容易。

【mysql】字符串截取函数substring_index

substring_index直接用于根据分隔符和位置获取字符串。

例如“身高、体重、年龄、性别”,分隔符是逗号,取左边第三个逗号,使用“1 8 0cm,7 5 kg”。

取第三个逗号的右侧并使用 substring_index("1 8 0cm,7 5 kg,", ",", -1 ),结果将为“2 7 ”。

在处理数据库中多个字段的数据时,此技术特别有用。