删除尾随空格并将它们添加为前导空格

时间:2016-08-11 22:13:05

标签: mysql sql

我想从列中的表达式中删除尾随空格,并将它们添加到表达式的开头。例如,我目前有表达式:

Sample_four_space    
Sample_two_space  
Sample_one_space 

我想将此专栏转换为:

    Sample_four_space
  Sample_two_space
 Sample_one_space

我试过这个表达式:

UPDATE My_Table
SET name = REPLACE(name,'% ',' %')

但是,我想要一个更强大的查询,可以适用于任何长度的尾随空格。你能帮我开发一个查询来删除所有尾随空格并将它们添加到表达式的开头吗?

1 个答案:

答案 0 :(得分:2)

如果您知道所有空格都在最后(如您的示例所示,那么您可以计算它们并将它们放在开头:

select concat(space(length(name) - length(replace(name, ' ', ''))),
              replace(name, ' ', '')
             )

否则更好的解决方案是:

select concat(space( length(name) - length(trim(trailing ' ' from name)) ),
              trim(trailing ' ' from name)
             )

或:

select concat(space( length(name) - length(rtrim(name)) ),
              rtrim(name)
             )

这两种情况都会计算空格的数量(在其中或末尾)。然后space()函数复制空格,concat()将它们放在开头。