powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как убрать пробелы внутри строки?
19 сообщений из 19, страница 1 из 1
как убрать пробелы внутри строки?
    #34762890
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из такой
"aaaa<20 пробелов>bbbbb<10 пробелов>cccc"

получить такую
"aaaa<1 пробел>bbbbb<1 пробел>cccc"
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34763152
muma1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WinnipuhИз такой
"aaaa<20 пробелов>bbbbb<10 пробелов>cccc"

получить такую
"aaaa<1 пробел>bbbbb<1 пробел>cccc"

replace(text,'< 1 пробел>','')
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34763154
muma1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
muma1 WinnipuhИз такой
"aaaa<20 пробелов>bbbbb<10 пробелов>cccc"

получить такую
"aaaa<1 пробел>bbbbb<1 пробел>cccc"

sorry :-), так :
replace(text,'<2 пробела>','')
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34763160
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muma1 muma1 WinnipuhИз такой
"aaaa<20 пробелов>bbbbb<10 пробелов>cccc"

получить такую
"aaaa<1 пробел>bbbbb<1 пробел>cccc"

sorry :-), так :
replace(text,'<2 пробела>','')

я понял ;-), просто пробелы убираются здесь
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34763162
muma1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
только работает не всегда правильно. четное количество удаляет совсем.
надо regexp_replace использовать.
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34763165
muma1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так вот лучше:
regexp_replace('d d','[[:space:]]+',' ')
пример:
select q, length(q) FROM regexp_replace('d d','[[:space:]]+',' ') q;
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34764591
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересные эффекты:

1. Так работает, как и ожидалось:
(делаю искуственно строку с кучей пробелов внутри)

select length(rpad(rpad('hi', 3000,' '),3020,'hu')),
length(regexp_replace(rpad(rpad('hi', 3000,' '),3020,'hu'),'[[:space:]]+',' ')),
regexp_replace(rpad(rpad('hi', 3000,' '),3020,'hu'),'[[:space:]]+',' ')

-------------------------------------
3020 23 hi huhuhuhuhuhuhuhuhuhu

2. Беру живую стоку из базы, ту, на котрой ошибка построения вектора из-за длинного слова внутри
select length(xstring),length(regexp_replace(xstring,'[[:space:]]+',' ')),
regexp_replace(xstring,'[[:space:]]+',' '),
to_tsvector('default',regexp_replace(xstring,'[[:space:]]+',' ')) from x_s
where node_id='40e2381a-e115-4a26-a2a3-5a7712340e0d';

---------------
5802 5802 срока и какой-то "недоделанный" вектор

1 rows fetched (172 ms)

NOTICE: A word you are indexing is too long. It will be ignored.


3. а так нет ошибки, беру подстроку и делаю trim, т.е. практичеки убираю внутри те же пробелы

select node_id,length(xstring),ltrim(SUBSTRING(xstring,2300,2100)),
to_tsvector('default',ltrim(SUBSTRING(xstring,2300,2100))) from x_s
where node_id='40e2381a-e115-4a26-a2a3-5a7712340e0d';

-----------
1 rows fetched (16 ms)


Что за чудеса?
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34764867
muma1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
может encoding вмешивается ?
можешь эту чертову строку на muma1собакmailточкru прислать ?
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34765369
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muma1может encoding вмешивается ?
можешь эту чертову строку на muma1собакmailточкru прислать ?

да, но как ее и чем аккуратно выбрать, чтобы прислать без искажений?
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34765421
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuh muma1может encoding вмешивается ?
можешь эту чертову строку на muma1собакmailточкru прислать ?

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

сделать insert-select в другую таблицу, и ее задампить :)
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34765462
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_v13 Winnipuh muma1может encoding вмешивается ?
можешь эту чертову строку на muma1собакmailточкru прислать ?

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

сделать insert-select в другую таблицу, и ее задампить :)

как задампить одну таблицу?
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34765537
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pg_dump -F p -t table_name database_name > tablichko.dmp
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34766218
muma1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
regexp_replace-то не работает на твоей строке. очень странно...
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34766363
ЯЕХХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Флажок g к regexp_replace() не забыли?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
postgres=# select regexp_replace('a s      d  e  ', '\s+', ' ');
 regexp_replace
-----------------
 a s      d  e
( 1  row)

postgres=# select regexp_replace('a s      d  e  ', '\s+', ' ', 'g');
 regexp_replace
----------------
 a s d e
( 1  row)
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34766859
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЯЕХХФлажок g к regexp_replace() не забыли?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
postgres=# select regexp_replace('a s      d  e  ', '\s+', ' ');
 regexp_replace
-----------------
 a s      d  e
( 1  row)

postgres=# select regexp_replace('a s      d  e  ', '\s+', ' ', 'g');
 regexp_replace
----------------
 a s d e
( 1  row)



select length(xstring),
length(regexp_replace(xstring,'\s+', ' ', 'g')),
regexp_replace(xstring,'\s+', ' ', 'g') from x_s where node_id='40e2381a-e115-4a26-a2a3-5a7712340e0d';

-----------------------------
5802 5802

1 rows fetched (187 ms)

WARNING: nonstandard use of escape in a string literal at character 55
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
WARNING: nonstandard use of escape in a string literal at character 97
HINT: Use the escape string syntax for escapes, e.g., E'\r\n'.
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34767320
ЯЕХХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну я думал вы догадаетесь задвоить бэкслеш :-)
У меня-то 8.2 и standard_conforming_strings = on
Или как в исходном запросе [[:space:]] оставьте
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34767458
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЯЕХХНу я думал вы догадаетесь задвоить бэкслеш :-)
У меня-то 8.2 и standard_conforming_strings = on
Или как в исходном запросе [[:space:]] оставьте

не, я честно копирую как есть :)
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34768290
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то сделало, но все равно сообщение, как сним бороться?

select length(xstring),
length(regexp_replace(xstring,'\\s+', ' ', 'g')),
regexp_replace(xstring,'\\s+', ' ', 'g') from x_s where node_id='40e2381a-e115-4a26-a2a3-5a7712340e0d';
--------------------
5802 1687

1 rows fetched (485 ms)

WARNING: nonstandard use of \\ in a string literal at character 55
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
WARNING: nonstandard use of \\ in a string literal at character 98
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
...
Рейтинг: 0 / 0
как убрать пробелы внутри строки?
    #34769743
muma1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WinnipuhЧто-то сделало, но все равно сообщение, как сним бороться?

select length(xstring),
length(regexp_replace(xstring,'\\s+', ' ', 'g')),
regexp_replace(xstring,'\\s+', ' ', 'g') from x_s where node_id='40e2381a-e115-4a26-a2a3-5a7712340e0d';
--------------------
5802 1687

1 rows fetched (485 ms)

WARNING: nonstandard use of \\ in a string literal at character 55
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
WARNING: nonstandard use of \\ in a string literal at character 98
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.

ну... так : "честно, как написано" !!! :
select length(xstring),
length(regexp_replace(xstring,E'\\s+', ' ', 'g')),
regexp_replace(xstring,E'\\s+', ' ', 'g') from test.x_s where node_id='40e2381a-e115-4a26-a2a3-5a7712340e0d';
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / как убрать пробелы внутри строки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]