首页 > 解决方案 > MySQL使用子字符串定位来修剪或获取特定的字符串集

问题描述

我有一个cea_no从我的表中命名的列。但我只想要它的特定字符串。我已经尝试了几种方法,但它对我不起作用。你知道我怎么能做到这一点吗?

这是我的查询

select id, cea_no, substring(cea_no, 1, locate('/', cea_no)) as x  from xp_guru_listings limit 10;

结果

+----+-----------------------------+------------------+
| id | cea_no                      | x                |
+----+-----------------------------+------------------+
|  1 | "CEA: R017722B / L3009740K" | "CEA: R017722B / |
|  2 | "CEA: R016023J / L3009793I" | "CEA: R016023J / |
|  3 | "CEA: R011571E / L3002382K" | "CEA: R011571E / |
|  4 | "CEA: R054044J / L3010738A" | "CEA: R054044J / |
|  5 | "CEA: R041180B / L3009250K" | "CEA: R041180B / |
|  6 | "CEA: R030152G / L3008022J" | "CEA: R030152G / |
|  7 | "CEA: R057318G / L3008022J" | "CEA: R057318G / |
|  8 | "CEA: R043256G / L3002382K" | "CEA: R043256G / |
|  9 | "CEA: R026068E / L3002382K" | "CEA: R026068E / |
| 10 | "CEA: R053784I / L3008022J" | "CEA: R053784I / |
+----+-----------------------------+------------------+

我只想要那R017722B部分。删除"CEA:, 字符串部分之后的第二组/字符串。我怎样才能做到这一点?非常感谢。我正在使用 MySQL xampp。

标签: mysqlsqldatabasesqlite

解决方案


我会SUBSTRING_INDEX在这里使用:

SELECT
    id,
    cea_no,
    select
    SUBSTRING_INDEX(SUBSTRING_INDEX(cea_no, 'CEA: ', -1), ' / ', 1) AS x
FROM xp_guru_listings;

要了解这个技巧是如何工作的,请考虑cea_no. CEA: R017722B / L3009740K第一次调用SUBSTRING_INDEX返回R017722B / L3009740K,第二次调用返回R017722B


推荐阅读