如何删除 SQL 中首字母缩略词中的空格?
How to remove spaces in an acronym in SQL?
我想编写一个函数来删除孤立字母之间的空格,例如首字母缩略词。
例如,如果我有:
'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'
我找不到正确的方法,有人可以帮我吗?
谢谢。
尝试使用 ltrim 和 rtrim 函数。
例子:
更新 'table' 设置 campo=ltrim(rtrim(campo))
使用替换函数去除比较两边的空格。
但请注意,这将是低效的,因为您的查询将无法使用索引
REPLACE(mystring,' ','')
https://docs.microsoft.com/en-us/sql/t-sql/functions/replace-transact-sql
本文 post 中描述的正则表达式应该适合您(对 MariaDB 的正则表达式稍作调整)。来自@Alan Moore 的post:
"It looks to me like you want to remove any space that is (1) preceded by a letter which is not itself preceded by a letter, and (2) followed by a letter which is not itself followed by a letter. Those conditions can be expressed precisely as nested lookarounds"。请给他点赞
因此假设您的专栏名为 'DESC',您的答案将是:
SELECT TRIM(REGEXP_REPLACE(DESC, '(?<=(?<![[:alpha:]])[[:alpha:]]) +(?=[[:alpha:]](?![[:alpha:]]))','')) AS fixed_desc
FROM table;
我想编写一个函数来删除孤立字母之间的空格,例如首字母缩略词。
例如,如果我有:
'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'
我找不到正确的方法,有人可以帮我吗?
谢谢。
尝试使用 ltrim 和 rtrim 函数。 例子: 更新 'table' 设置 campo=ltrim(rtrim(campo))
使用替换函数去除比较两边的空格。
但请注意,这将是低效的,因为您的查询将无法使用索引
REPLACE(mystring,' ','')
https://docs.microsoft.com/en-us/sql/t-sql/functions/replace-transact-sql
本文 post 中描述的正则表达式应该适合您(对 MariaDB 的正则表达式稍作调整)。来自@Alan Moore 的post: "It looks to me like you want to remove any space that is (1) preceded by a letter which is not itself preceded by a letter, and (2) followed by a letter which is not itself followed by a letter. Those conditions can be expressed precisely as nested lookarounds"。请给他点赞
因此假设您的专栏名为 'DESC',您的答案将是:
SELECT TRIM(REGEXP_REPLACE(DESC, '(?<=(?<![[:alpha:]])[[:alpha:]]) +(?=[[:alpha:]](?![[:alpha:]]))','')) AS fixed_desc
FROM table;