我想写一个删除孤立字母之间空格的函数,比如首字母缩写词。
例如,如果我有:
'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'
我找不到合适的方法,有人可以帮助我吗?
感谢。
答案 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;
答案 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