2013-04-25 64 views
0

我想要获得总计的审阅长度,但允许人们添加列表,表格,颜色等。我只想获得实际审阅的计数字符。有没有办法使用正则表达式去除除了真正的单词之外的所有字符来计算字符?我使用的MySQL 5.5,这里是当前查询我:记录剥离html标签的计数长度

select sum(COALESCE(length(reviewTxt),0) + COALESCE(length(reviewTxt1),0) + COALESCE(length(reviewTxt2),0) + COALESCE(length(reviewTxt3),0) + COALESCE(length(reviewTxt4),0) + COALESCE(length(reviewTxt5),0) + COALESCE(length(reviewTxt6),0) + COALESCE(length(reviewTxt7),0) + COALESCE(length(reviewTxt8),0) + COALESCE(length(reviewTxt9),0) + COALESCE(length(reviewTxt10),0)) as totalLength 
        from set_reviews 

回答

0

下从http://www.sitepoint.com/forums/showthread.php?656167-PHP-s-strip_tags%28%29-equivalent-MYSQL-function采取:

- = - = - = - = - = - = - = - = - = - = - = - = -

这是PHP函数strip_tags的

delimiter || 

DROP FUNCTION IF EXISTS strip_tags|| 
CREATE FUNCTION strip_tags(x longtext) RETURNS longtext 
LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA 
BEGIN 
DECLARE sstart INT UNSIGNED; 
DECLARE ends INT UNSIGNED; 
SET sstart = LOCATE('<', x, 1); 
REPEAT 
SET ends = LOCATE('>', x, sstart); 
SET x = CONCAT(SUBSTRING(x, 1 ,sstart -1) ,SUBSTRING(x, ends +1)) ; 
SET sstart = LOCATE('<', x, 1); 
UNTIL sstart < 1 END REPEAT; 
return x; 
END; 
|| 
delimiter ; 

mysql> SELECT strip_tags('<a href="HelloWorld.html"><B>Hi, mate!</B></a>') as strip_tags; 

+------------+ 
| strip_tags | 
+------------+ 
| Hi, mate! | 
+------------+ 

1 row in set (0.00 sec) 
+0

我将尝试这个功能添加到我的分贝和我不断收到以下错误 你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以找到在'delimiter ||附近使用的正确语法 DROP FUNCTION IF EXISTS strip_tags || CREATE FUNCTION strip_tags(x'in line 1 警告:---> W(1):您的SQL语法错误;请查看与您的MySQL服务器版本相对应的手册, 'delimiter || 删除功能如果存在strip_tags || CREATE FUNCTION strip_tags(x'在第1行 – Jeff 2013-04-25 16:56:22

+0

你在哪里执行这条语句?DELIMITER不是MySQL语句 - 它通常由SQL客户端处理。 – 2013-04-25 17:12:02

+0

尝试将它添加到数据库本身来调用,就像我在oracle中所做的一样。我在ColdFusion中编程,而不是PHP,所以我不知道这将如何设置在那里 – Jeff 2013-04-25 20:12:54