删除列中除字母和单个空格以外的所有字符

zbdgwd5y  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(248)

title 是这样的:

14 blue5 sky
3 5gold sun"
'/lorem   ip25sum
  light moon

我需要删除除字母和单词之间的单个空格以外的所有内容。
所以上面的例子应该是:

blue sky
gold sun
lorem ipsum
light moon

有什么帮助吗?
物理管理员:

Server: 127.0.0.1 via TCP/IP
Server type: MariaDB
Server connection: SSL is not being used Documentation
Server version: 10.1.37-MariaDB - mariadb.org binary distribution
Protocol version: 10
User: root@localhost
Server charset: UTF-8 Unicode (utf8)
8dtrkrch

8dtrkrch1#

您应该能够使用嵌套的 REGEXP_REPLACE 要实现您的目标:

SELECT REGEXP_REPLACE(
         REGEXP_REPLACE(
           REGEXP_REPLACE(title, '[^[:alpha:] ]', ''),
           '^\\s+', ''),
         '\\s+', ' ') AS newtitle FROM table1

第一个 REGEXP_REPLACE 删除任何非字母字符;第二个删除字符串开头的任何空格,最后一个用单个空格替换一个或多个空格的任何序列。
输出(对于示例数据):

newtitle
blue sky
gold sun
lorem ipsum
light moon
čć đš hello

要更新表中的值,可以使用以下查询:

UPDATE table1
SET title =  REGEXP_REPLACE(
               REGEXP_REPLACE(
                 REGEXP_REPLACE(title, '[^[:alpha:] ]', ''),
                 '^ ', ''),
                '\\s+', ' ')

在dbfiddle上演示

相关问题