MySQL: как удалить двойные или более пробелов из строки? - PullRequest
12 голосов
/ 04 августа 2011

Я не смог найти этот вопрос для MySQL, поэтому вот он:

Мне нужно обрезать все двойные или более пробелов в строке до одного пробела.

Например: "Быстрая коричневая лиса" должно быть : "Быстрая коричневая лиса"

Функция REPLACE (str, "", "") удаляет только двойные пробелы, но оставляет несколько пробелов, когда их больше ...

Ответы [ 12 ]

0 голосов
/ 28 января 2016

Если строка, которую вы хотите преобразовать, состоит только из алфавитов и нескольких пробелов [A-Za-z] *, тогда будет работать следующая функция. Я обнаружил шаблон, когда такие строки конвертируются в шестнадцатеричные. Исходя из этого, мое решение следует. Не так элегантно, но не требует никаких процедур.

unhex(
replace(
replace(
replace(
replace(
replace(
replace(
hex(str)
,204,1014)
,205,1015)
,206,1016)
,207,1017)
,20,'')
,101,20)
)
0 голосов
/ 04 августа 2011

Это немного общее решение: от

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=56195&whichpage=1

create table t (s sysname)
insert into t select 'The   Quick  Brown    Fox'
-- convert tabs to spaces
update  t set s = replace(s, '  ',' ')
where   charindex(' ', s) > 0

-- now do the work.
while 1=1
begin
    update t
    set     s = substring(s, 1, charindex('  ', s, 1)-1) + ' ' + ltrim(substring(s,charindex('  ', s, 1), 8000))
    where   charindex('  ', s, 1) > 0

    if @@rowcount = 0
        break
end

select  s
from    t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...