Как убрать больше одного пробела между 2 и более словами? - PullRequest
0 голосов
/ 07 мая 2019

Я хочу удалить пробелы между строками.Количество мест не фиксировано.Как это сделать?например:

'ABCD   123'
'ABCD         123'

Ответы [ 4 ]

4 голосов
/ 07 мая 2019

Вы можете использовать трюк replace():

select replace(replace(replace(col, ' ', '><'), '<>', ''), '><', ' ')

Это предполагает, что строка не содержит символов, используемых для замены.(Можно использовать любую пару символов.)

Если ваша строка всегда имеет предложенную форму - две строки с пробелами только посередине, вы также можете сделать:

select concat(substring_index(col, ' ', 1), ' ',
              substring_index(col, ' ', -1)
             )

РЕДАКТИРОВАТЬ:

Если вы хотите удалить все пробелы, то просто выполните:

replace(str, ' ', '')

Выше, чтобы оставить один пробел.

3 голосов
/ 07 мая 2019

Чтобы округлить ответы, в MySQL 8+ мы можем попробовать использовать REGEXP_REPLACE:

SELECT REGEXP_REPLACE(col, '[ ]+', '') AS col_out
FROM yourTable;

Если вы хотите оставить один пробел между словами, просто замените один пробел вместо пустой строки.

0 голосов
/ 07 мая 2019

Использование substring_index

set @str='ABC 123';

select concat(a , b) as "Result String"
  from
   (
     select substring_index(@str,' ',1) a ,substring_index(@str,' ',-1) b
   ) q;

Result String
-------------
ABC123
0 голосов
/ 07 мая 2019

Не зная того, для чего вы это используете, я бы порекомендовал изучить функцию замены.

Документация Microsoft

Документация MYSQL

REPLACE('ABCD   123',' ','')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...