Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удалить пробелы после кавычки (скобки) / 11 сообщений из 11, страница 1 из 1
13.08.2020, 12:21
    #39989298
edward_sh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
Добрый день, джентельмены!
Возник вопрос такого плана.
Некоторые пользователи после и перед знаком кавычек (скобок) ставят, а некоторые не ставят символ пробела.
Естественно, что при строковом сравнении значений полей с кавычками и без, будут разными.
Хотелось бы избавиться от такой головной боли в своей БД.
Решение на вскидку - по символьный перебор строки и сравнение символа кавычки и последующего пробела. Потом его удаление.
Возможно, есть более элегантный способ?
Т.е. имеется строка
Это тестовая " строка"которую "надо преобразовать.
Должно быть на выходе
Это тестовая "строка" которую надо преобразовать.
Заранее благодарен за конструктивные ответы.
...
Рейтинг: 0 / 0
13.08.2020, 12:49
    #39989319
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
Код: sql
1.
SELECT REPLACE(REPLACE(строка,'" ','"'),' "','"');
...
Рейтинг: 0 / 0
13.08.2020, 13:15
    #39989326
edward_sh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
Добрый день!
Это первое, что я попробовал. Но вариант с REPLACE уничтожит правильные пробелы
Например: Это тестовая строка " для которой " мы хотим избавиться от пробелов
превратится в
Это тестовая строка"для которой"мы хотим избавиться от пробелов
что явно не то, что хочется ...
...
Рейтинг: 0 / 0
13.08.2020, 13:19
    #39989328
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
Как отличать "правильные" от "неправильных"?
...
Рейтинг: 0 / 0
13.08.2020, 13:21
    #39989332
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
invm
Как отличать "правильные" от "неправильных"?
Да легко -- просто нужен парсер, который будет отличать открывающую кавычку от закрывающей.
...
Рейтинг: 0 / 0
13.08.2020, 13:24
    #39989335
edward_sh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
Правильные - это те, до и после кавычек идет пробел ...
Вот насчет парсера я и задумался. У кого-нибудь есть аналогичные разработки?
Не поделитесь текстом?
...
Рейтинг: 0 / 0
13.08.2020, 13:34
    #39989344
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
edward_sh
Правильные - это те, до и после кавычек идет пробел ...
Вот насчет парсера я и задумался. У кого-нибудь есть аналогичные разработки?
Не поделитесь текстом?
В целом, это путь в никуда. Завтра ваши пользователи начнут писать "ё" вместо "е", использовать «» вместо "" или комбинировать, вообще слова не пробелом разделять... Вы для всего этого будете парсер каждый раз писать?

Для поиска по тексту есть разные подходы, которые обычно сводятся к поиску по словам или их формам, для этого есть как стандартные решения, так и самописные.
...
Рейтинг: 0 / 0
13.08.2020, 13:41
    #39989348
edward_sh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
С кавычками и их разновидностью я вроде поборолся.
Проблемы е и ё - это проблемы ввода пользователя.
Мне нужно, что бы одна и та же строка (с пробелом внутри кавычек или без) не появлялась в базе
Согласитесь, что
обучение по профессии "Пожарный" и обучение по профессии " Пожарный" - это несколько разные строки
и как Вы предлагаете искать дубли в БД?
...
Рейтинг: 0 / 0
13.08.2020, 13:48
    #39989353
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
edward_sh
С кавычками и их разновидностью я вроде поборолся.
Проблемы е и ё - это проблемы ввода пользователя.
Ага. Проблемы ввода. Я посмотрю, как вы будете объяснять вашим пользователям, что "самолет" и "самолёт" -- это разные вещи.

edward_sh
Мне нужно, что бы одна и та же строка (с пробелом внутри кавычек или без) не появлялась в базе
Согласитесь, что
обучение по профессии "Пожарный" и обучение по профессии " Пожарный" - это несколько разные строки
и как Вы предлагаете искать дубли в БД?
Расскажите, как надо расставить или убрать пробелы, чтобы следующие строки считались одинаковыми?

обучение по профессии "" Пожарный"
обучение по профессии "Пожарный"
обучение по профессии "Пожарный
...
Рейтинг: 0 / 0
13.08.2020, 14:07
    #39989363
edward_sh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
Спасибо, Сергей Алексеевич!
Подсказали о косяке, о котором я забыл - о двойных кавычках """" :)
Принцип довольно простой, есть только одна кавычка - режем ее. Это проблемы ввода - проблемы пользователя.
Пробел после кавычки - убиваем пробел. Пробел перед кавычкой - убиваем пробел.
Будет в слове е или ё - не мои проблемы - проблемы пользовательского ввода.
Я не пытаюсь отловить все косяки ввода пользователем данных - это невозможно.
Но частые косяки, которые я могу исправить сам ... Почему бы и нет?
...
Рейтинг: 0 / 0
13.08.2020, 15:12
    #39989397
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удалить пробелы после кавычки (скобки)
edward_sh,

Я бы советовал написать свой CLR нормализатор или универсально пакет CLR функций регулярных выражений.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удалить пробелы после кавычки (скобки) / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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