如何在MySQL中截取字符串的一部分?

5
在MySQL中,我有一个文本列,其中包含“bla bla bla YYY=76767 bla bla bla”。 我需要截取数字76767。 如何在SQL中完成这个操作?

输出的字符串会是 bla bla bla YYY= bla bla bla 吗? - Vishwanath Dalvi
2
你想要删除这个数字,还是获取它? - Denys Séguret
您是否希望更新实际数据,以从该值中去掉“76767”? - Zane Bien
更新而不是替换:https://dev59.com/jnI-5IYBdhLWcg3wZ3YR || 正则表达式替换:https://dev59.com/13NA5IYBdhLWcg3wX8rk - Ciro Santilli OurBigBook.com
3个回答

8

您可以使用

select substring_index(substring(mycol, instr(mycol, "=")+1), " ", 1)

获取等号后的第一个标记。

这将返回76767


此方法分两步进行:

substring(mycol, instr(mycol, "=")+1)
返回从等号后面开始的字符串。
substring_index( xxx , " ", 1)
从通过“ ”分割的虚拟数组中获取第一个元素,因此返回xxx的第一个标记。

更抽象/通用:将@frst@scnd设置为分隔符。您要查找的术语位于@frst@scnd之间。在这种情况下,它是 SET @frst:='YYY='; SET @scnd:=''; 如果要更新,则需要使用以下代码UPDATE tbl set my_col = SUBSTRING_INDEX(SUBSTRING(my_col , INSTR(my_col , @frst)+1), @scnd, 1) WHERE my_col LIKE '%@scnd%'; 或者如果要选择,则使用以下代码SELECT SUBSTRING_INDEX(SUBSTRING(my_col , INSTR(my_col , @frst)+1), @scnd, 1) from WHERE my_col LIKE '%@scnd%'; - kklepper

2

去掉字段中的数字最简单的方法就是使用REPLACE函数。

SELECT REPLACE(yourcolumn, '76767', '')
FROM yourtable;
你可以使用 SUBSTRINGINSTR 的组合。

0

如果你想要更新,请使用

UPDATE table_name SET column_name = REPLACE(column_name, '76767', '');

如果你想在你的数据库中用 bla bla bla 替换 76767,请使用以下代码:

UPDATE table_name SET column_name = REPLACE(column_name, '76767', 'bla bla bla');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,