powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Замена двойных кавычек на угловые
11 сообщений из 11, страница 1 из 1
Замена двойных кавычек на угловые
    #39162407
Viacheslav_mihalich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!

Возможно ли программно заменить во всех полях таблицы двойные кавычки " " на угловые « »,
учитывая, что в угловых есть открывающая и закрывающая кавычки?
...
Рейтинг: 0 / 0
Замена двойных кавычек на угловые
    #39162578
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Viacheslav_mihalich,

Интерсно, как поступать в таких случаях - ОАО "Завод "Звездочка", или ОАО "Завод "Звездочка"".
Я думаю здесь даже регулярка не поможет.
...
Рейтинг: 0 / 0
Замена двойных кавычек на угловые
    #39162638
vsl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vsl
Гость
big-trot,

Как раз в этих случаях нет ничего сложного — перед открывающей кавычкой пробел, перед закрывающей — нет. Всё аккуратно и просто.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 
    test_string, 
    regexp_replace(regexp_replace(test_string, '(^|[\s,])"(?![,.!?])', '\1«', 'g'),'"','»','g') as converted_string
from (
    values 
        ('"test passed?" or "another test"," third ",""'),
        ('no quotes'),
        ('ОАО "Завод "Звездочка"'),
        ('ОАО "Завод "Звездочка""')
) v(test_string)


Код: plaintext
1.
2.
3.
4.
5.
6.
test_string                                   | converted_string
----------------------------------------------+----------------------------------------------
"test passed?" or "another test"," third ","" | «test passed?» or «another test»,« third »,«»
no quotes                                     | no quotes
ОАО "Завод "Звездочка"                        | ОАО «Завод «Звездочка»
ОАО "Завод "Звездочка""                       | ОАО «Завод «Звездочка»»


А вот когда в данных мусор...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select 
    test_string, 
    regexp_replace(regexp_replace(test_string, '(^|[\s,])"(?![,.!?])', '\1«', 'g'),'"','»','g') as converted_string
from (
    values 
        ('что за уродство отбивать " кавычки пробелами " !'),
        ('single quote 5"25')
) v(test_string)


Код: plaintext
1.
2.
3.
4.
test_string                                      | converted_string
-------------------------------------------------+----------------------------------------------
что за уродство отбивать " кавычки пробелами " ! | что за уродство отбивать « кавычки пробелами « !
single quote 5"25                                | single quote 5»25
...
Рейтинг: 0 / 0
Замена двойных кавычек на угловые
    #39162986
Viacheslav_mihalich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-trot,

Спасибо огромное!

Поскольку данные в базу были внесены аккуратно, то указанным Вами способом
удалось заменить 100% кавычек:
"Текст" на «Текст»
...
Рейтинг: 0 / 0
Замена двойных кавычек на угловые
    #39162989
Viacheslav_mihalich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vsl,

Спасибо огромное!

Поскольку данные в базу были внесены аккуратно, то указанным Вами способом
удалось заменить 100% кавычек:
"Текст" на «Текст»
...
Рейтинг: 0 / 0
Замена двойных кавычек на угловые
    #39164583
fd00ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тёма рукоплещет))
...
Рейтинг: 0 / 0
Замена двойных кавычек на угловые
    #39165962
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trotViacheslav_mihalich,

Интерсно, как поступать в таких случаях - ОАО "Завод "Звездочка", или ОАО "Завод "Звездочка"".
Я думаю здесь даже регулярка не поможет.

регулярка точно не поможет, потому что это вообще невозможно.
точнее, можно но не во всякой регулярке, нужна расширенная половая.
...
Рейтинг: 0 / 0
Замена двойных кавычек на угловые
    #39166882
Viacheslav_mihalich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!

есть запрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT c_t."TAG_ID" as tag_id,
array_agg(c_t."COUNTER") as count,
array_agg(c_d_s."DOCTOR_ID") as doc_id,
c_d_s."CLINIC_ID" as clinic_id
  FROM  "COUNTER_TAGS" c_t
  LEFT JOIN "CLINIC_DOCTOR_SCHEDULE" c_d_s ON c_t."DOCTOR_ID"=c_d_s."DOCTOR_ID"
  WHERE c_t."COUNTER" notnull
  ORDER BY  c_t."TAG_ID" DESC;



где array_agg(c_t."COUNTER") - массив целых чисел.

Просьба подсказать: как вместо этого поля выдавать сумму чисел данного массива?
...
Рейтинг: 0 / 0
Замена двойных кавычек на угловые
    #39166956
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viacheslav_mihalich,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT c_t."TAG_ID" as tag_id,
array_agg(c_t."COUNTER") as count,
SUM(c_d_s."DOCTOR_ID") as doc_id,
c_d_s."CLINIC_ID" as clinic_id
  FROM  "COUNTER_TAGS" c_t
  LEFT JOIN "CLINIC_DOCTOR_SCHEDULE" c_d_s ON c_t."DOCTOR_ID"=c_d_s."DOCTOR_ID"
  WHERE c_t."COUNTER" notnull
  ORDER BY  c_t."TAG_ID" DESC;
...
Рейтинг: 0 / 0
Замена двойных кавычек на угловые
    #39166959
Lonepsycho
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viacheslav_mihalich,

поправка:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT c_t."TAG_ID" as tag_id,
SUM(c_t."COUNTER") as count,
array_agg(c_d_s."DOCTOR_ID") as doc_id,
c_d_s."CLINIC_ID" as clinic_id
  FROM  "COUNTER_TAGS" c_t
  LEFT JOIN "CLINIC_DOCTOR_SCHEDULE" c_d_s ON c_t."DOCTOR_ID"=c_d_s."DOCTOR_ID"
  WHERE c_t."COUNTER" notnull
  ORDER BY  c_t."TAG_ID" DESC;
...
Рейтинг: 0 / 0
Замена двойных кавычек на угловые
    #39167066
Viacheslav_mihalich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Lonepsycho, спасибо!

Я в запросе забыл еще GROUP BY указать, без которого с массивом не работало.
В финале:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT c_t."TAG_ID" as tag_id,
SUM(c_t."COUNTER") as count,
array_agg(c_d_s."DOCTOR_ID") as doc_id,
c_d_s."CLINIC_ID" as clinic_id
  FROM  "COUNTER_TAGS" c_t
  LEFT JOIN "CLINIC_DOCTOR_SCHEDULE" c_d_s ON c_t."DOCTOR_ID"=c_d_s."DOCTOR_ID"
  WHERE c_t."COUNTER" notnull
  GROUP BY tag_id,clinic_id
  ORDER BY  c_t."TAG_ID" DESC;
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Замена двойных кавычек на угловые
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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