在MySQL中从字符串的开头和结尾修剪不同的字符

问题描述

在运行MysqL数据库中,我的列中的数据包含以段落标记开头和结尾的文本,并且我试图在select语句中删除它们

<p>Some Text</p>

我了解TRIM语句可以从字符串的开头,结尾或两者中删除特定字符,因此

TRIM('x' FROM xSometextx) as trimmed

这将从字符串的开头和结尾删除x,但是如果它们的开头和结尾字符不同,我无法找到TRIM。例如,是否可以在select语句中删除前导<p>和尾随</p>

解决方法

您可以将嵌套TRIM与说明符LEADINGTRAILING一起使用,以删除<p>标签:

SELECT TRIM(TRAILING '</p>' FROM TRIM(LEADING '<p>' FROM '<p>Test</p>'))

从MySQL 8.0开始,您还可以使用REGEXP_REPLACE删除<p>标签,就像上面的TRIM

SELECT REGEXP_REPLACE('<p>Test</p>','^\<p\>|\<\/p\>$','')

demo on dbfiddle.uk