如何删除SQL中首字母缩略词中的空格?

时间:2017-06-02 11:02:55

标签: sql mariadb

我想写一个删除孤立字母之间空格的函数,比如首字母缩写词。

例如,如果我有:

'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'

我找不到合适的方法,有人可以帮助我吗?

感谢。

3 个答案:

答案 0 :(得分:2)

本文中描述的正则表达式应该对你有用(稍微调整一下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

答案 1 :(得分:0)

尝试使用ltrim和rtrim函数。 例: 更新表&#39;设置campo = ltrim(rtrim(campo))

答案 2 :(得分:0)

使用replace函数从比较的两边剥去空格。

但请注意,这将是低效的,因为您的查询将无法使用索引

REPLACE(mystring,' ','') 

https://docs.microsoft.com/en-us/sql/t-sql/functions/replace-transact-sql