Mysql,REGEXP 中的空格

标签 mysql regex function

我有一个问题。

我的这个函数完成了我想要的一切,除了一件事,它还删除了字符串中的空格,这是我不想要的。

我一直在尝试这里的所有不同的技巧和想法,但它不起作用。文档说我使用它是正确的,也许我误解了。有人可以帮我吗?

CREATE DEFINER=`user`@`%` FUNCTION `fn_RemoveNumbers`(str varchar(8000)) RETURNS varchar(767) CHARSET latin1
BEGIN
  DECLARE i, len SMALLINT DEFAULT 1; 
  DECLARE ret varchar(767) DEFAULT ''; 
  DECLARE c CHAR(1); 
  SET len = CHAR_LENGTH( str ); 
  REPEAT 
    BEGIN 
      SET c = MID( str, i, 1 ); 
      IF (c REGEXP '[[:alpha:]]') OR (c REGEXP '[[:space:]]') THEN 
        SET ret=CONCAT(ret,c); 
      END IF; 
      SET i = i + 1; 
    END; 
  UNTIL i > len END REPEAT; 
  RETURN ret; 
END

在我看来, (c REGEXP '[[:space:]]') 应该将字符附加到最终字符串,但事实并非如此。

我也尝试过“”、“[ ]”等,但没有成功。

我使用的是 mysql 版本 5.6。我使用了这个文档:http://dev.mysql.com/doc/refman/5.6/en/regexp.html

最佳答案

我无法在这里测试 UDF,但尝试将其设为 1 正则表达式,如下所示:

IF c REGEXP '[[:alpha:]]|[[:space:]]' THEN

您是否可能正在处理非标准空间?喜欢非换行空格吗?在这种情况下,也许这可以捕获所有空白:

IF c REGEXP '[[:alpha:]]|[[:blank:]]' THEN

或者,如果您只是想删除数字,如下所示:

IF c NOT REGEXP '[[:digit:]]' THEN

关于Mysql,REGEXP 中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19035084/

相关文章:

mysql - 当我从表中获取最大列时必须获取相应的时间戳

regex - 多个等号的精确正则表达式匹配

Javascript 点击时乘法

php - 好还是坏? - PHP 循环中的 Doctrine DBAL 查询

MySQL,如何将特定列克隆到新表中?

php从下拉列表中插入查询枚举作为字符串

c++ - sed/regex - 更新具有范围问题的源文件

正则表达式和 Powershell : Use Regex to Create Files based on name found in CSV

MySQL 查询似乎忽略了存储函数中的 WHERE 语句的一部分

r - 如何将由 "+"分隔的变量名列表传递给函数