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。

我会在这里使用SUBSTRING_INDEX

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

要了解此技巧的工作原理,请考虑cea_noCEA: R017722B / L3009740K。 对SUBSTRING_INDEX的第一次调用返回R017722B / L3009740K,第二次调用返回R017722B

考虑到 Tim Biegeleisen 的回答,如果你想更新所有列,只需像这样编辑他的代码:

UPDATE xp_guru_listings set cea_no = 
(select SUBSTRING_INDEX(SUBSTRING_INDEX(cea_no, 'CEA: ', -1), ' / ', 1));

这样,您的列cea_no将使用所需的值进行更新。干杯!

最新更新