我想编写一个函数来删除孤立字母之间的空格,就像首字母缩略词一样。

例如,如果我有:

'I B M Computers' i need to have in return 'IBM Computers'
' I B M ' => 'IBM'
'Computers A B' => 'Computers AB'
'Computers A BC' => 'Computers A BC' (nothing changes)
'Computers A B CD' => 'Computers AB CD'
'Computers A B C D' => 'Computers ABCD'

我找不到正确的方法,有人可以帮我吗?

谢谢。

最佳答案

这篇文章中描述的正则表达式应该适合你(稍微调整一下 MariaDB 的正则表达式)。来自@Alan Moore 的那篇文章:
“在我看来,您想删除 (1) 前面不是一个字母的字母,以及 (2) 后面是一个本身不是字母的字母。这些条件可以精确地表示为嵌套的环视”。请相信他。

https://stackoverflow.com/a/4233386/2543416

因此,假设您的列名为“DESC”,您的答案将是:

SELECT TRIM(REGEXP_REPLACE(DESC, '(?<=(?<![[:alpha:]])[[:alpha:]]) +(?=[[:alpha:]](?![[:alpha:]]))','')) AS fixed_desc
FROM table;

Test the regex here

关于sql - 如何在 SQL 中删除首字母缩略词中的空格?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44327357/

10-13 00:40