【问题标题】:Remove all whitespaces between non words?删除非单词之间的所有空格?
【发布时间】:2018-05-14 23:02:53
【问题描述】:

如何删除列中非单词之间的所有空格? 我有一列包含这样的值:

"This Is My - Value"
"This Is My- Value"
"This Is My/ Value"
"This Is My- Value (Other -Value)"

如何删除非单词之间的所有空格,如下所示:

"This Is My-Value"
"This Is My-Value"
"This Is My/Value"
"This Is My-Value(Other-Value)"

试过了,还是不行:

SELECT REGEXP_REPLACE(I,"\s*([^a-zA-Z\d\s:])\s*","\\1") FROM registros;

【问题讨论】:

  • 引号之间的以下字符“()-/\”
  • 这是mysql还是oracle?我不相信 mysql 有 REGEXP_REPLACE 功能。
  • MySQL 正则表达式没有像\s\d 这样的转义序列。
  • 查看dev.mysql.com/doc/refman/5.7/en/regexp.html 获取 MySQL 中正则表达式语法的文档。
  • @clinomaniac,MariaDB 实现了一个 REGEXP_REPLACE() 函数,或多或少类似于 Oracle 和 PostgreSQL 中的函数。 MySQL 没有这个功能。

标签: mysql mariadb regexp-replace


【解决方案1】:

知道了:

SELECT REGEXP_REPLACE(I,"\[[:blank:]]*([-/()])\[[:blank:]]*","\\1") FROM registros;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 2012-05-29
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    相关资源
    最近更新 更多