如何在 MySQL 中剪切部分字符串?
Posted
技术标签:
【中文标题】如何在 MySQL 中剪切部分字符串?【英文标题】:How to cut part of a string in MySQL? 【发布时间】:2012-06-20 07:18:41 【问题描述】:在 mysql 中,我有一个带有“bla bla bla YYY=76767 bla bla bla”的文本列。
我需要删掉76767这个号码。
如何在 SQL 中做到这一点?
【问题讨论】:
输出字符串bla bla bla YYY= bla bla bla
会是什么??
您要删除号码,还是提取号码?
您希望更新实际数据以从值中取出“76767”吗?
改为更新:***.com/questions/1876762/… ||正则表达式替换:***.com/questions/986826/…
【参考方案1】:
你可以使用
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%';
【参考方案2】:
消除您领域中的数字的最简单方法就是REPLACE
它。
SELECT REPLACE(yourcolumn, '76767', '')
FROM yourtable;
您也可以使用SUBSTRING
和INSTR
的组合。
【讨论】:
【参考方案3】:如果您不想更新,请使用
UPDATE table_name SET column_name = REPLACE(column_name, '76767', '');
如果您不想在数据库中将 76767
替换为 bla bla bla
,请使用
UPDATE table_name SET column_name = REPLACE(column_name, '76767', 'bla bla bla');
【讨论】:
以上是关于如何在 MySQL 中剪切部分字符串?的主要内容,如果未能解决你的问题,请参考以下文章