1

我有一个名为描述字段的表,其中包含如下文本

|Description                              |
|-----------------------------------------|
|This is a text <a>blah</a> <br/> <img /> |
|This is <b>second</b> <a>row</a>         |

我想删除“ < ”和“ > ”之间的所有内容

所需输出

|Description                              |
|-----------------------------------------|
|This is a text blah                      |
|This is second row                       |

无论如何我可以使用 MYSQL 查询来实现这一点。我目前无法使用存储过程,因为我没有权限。我已经请求访问使用存储过程,但这需要一些时间,我必须紧急完成这一点。

谢谢。

更新:我的问题类似于从文本字符串中删除 2 个字符之间的字符串,但我希望它在 MYSQL 查询中完成。

4

4 回答 4

2

简而言之,你不能,你需要一种更高级的语言,比如 PHP。您的 SQL 查询不是进行字符串操作的地方。

于 2012-09-11T16:18:54.520 回答
1

REPLACE() 使用通配符捕获左括号和右括号之间的未知文本怎么样?http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace

于 2012-09-11T16:39:57.673 回答
0

如果你使用 php 作为你的服务器端语言,你可以使用strip_tags函数来删除标签。我希望它可以帮助你。

于 2012-09-11T16:48:31.523 回答
0

由于这个问题仍然在谷歌搜索结果中,也许答案可能对某人有所帮助:

替换两个字符之间的内容的快速功能。它也应该与文字一起使用,但我没有用文字对其进行测试。用于删除以下字符串:“this is a [demo]”

[ 和 ] 之间的字符串:

select deletestr("这是一个 [demo]" ,'[',']');

和功能:

 CREATE DEFINER=`replace_with_your_db`@`%` 
FUNCTION `deletestr` (`inputstr` TEXT CHARSET utf8, `fromstr` VARCHAR(10) CHARSET utf8, `tostr` VARCHAR(10) CHARSET utf8) RETURNS text CHARSET utf8
    NO SQL
RETURN
replace(inputstr,substr(inputstr, locate(fromstr,inputstr),locate(tostr,inputstr)-locate(fromstr,inputstr)+length(tostr)),'')
于 2016-06-17T22:06:05.743 回答