Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> убрать кавычки, если они есть, mysql 
:(
    Опции темы
motorway
  Дата 28.1.2013, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



MySQL
Подскажите, как сделать запрос на UPDATE поля: если первый и последний символ - кавычка " - то надо оставить, то, что между ними.
Сам бы смог найти и сделать, но нужно быстро.
PM MAIL   Вверх
Akina
Дата 28.1.2013, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(motorway @  28.1.2013,  01:00 Найти цитируемый пост)
Сам бы смог найти и сделать, но нужно быстро. 

Неправда.
Самому сделать НАСТОЛЬКО ЭЛЕМЕНТАРНУЮ вещь быстрее, чем ждать у моря погоды пока кто-нить ответит.
Кабы мог - то мог бы как минимум сообразить, какие ещё сведения необходимо сообщить. И сообщил бы сразу.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
motorway
Дата 28.1.2013, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Я с MySQL давно работаю и привык делать сам или искать в Сети перед поиском вопроса, но перед этим сидел 6 часов за PHP и PHPMyAdmin, и если не считать того, что давно болею, то как минимум уже устал настолько, что не мог сидеть за компом.
Заказчику нужно было сдавать срочно сайт, поэтому оставлять это в неисправленном виде не хотел.
Понятно, что тут можно обойтись IF, SUBSTR, SUBSTR_INDEX или LIKE - посидев некоторое время в поисках, вполне всё можно сделать. Мне же нужно было срочно.
Что тут надо было ещё сообщить, не знаю - версию MySQL что ли?
PM MAIL   Вверх
Akina
Дата 28.1.2013, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(motorway @  28.1.2013,  17:21 Найти цитируемый пост)
Что тут надо было ещё сообщить, не знаю 

Ну хотя бы сообщить, что надо делать, если первый/последний (одновременно и по отдельности) символ - НЕ кавычка. Или сообщить, что в других, допустим, местах, кавычек не бывает...

Цитата(motorway @  28.1.2013,  17:21 Найти цитируемый пост)
Понятно, что тут можно обойтись IF, SUBSTR, SUBSTR_INDEX или LIKE 

Именно. Других вариантов нет, надеяться на то, что чудесным образом под это дело имеется спецово заточенная функция...
Так что - отобрать все записи, где нужное поле соответствует шаблону, и вырезать нужную часть 

Код

update table
set field = substring(field from 2 for length(field)-2)
where field like '"%"';


Это в предположении, что с остальными записями ничего делать не надо.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 28.1.2013, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Akina @  28.1.2013,  17:41 Найти цитируемый пост)
Других вариантов нет

регекспы?

Хотя предложенный тобой вариант мне понравился больше чем первый, что пришел мне в голову. 

Наверное, по хорошему, надо бы еще добавить реплейс даблквоты на одноквоту.
Наверное, еще как-то надо обдумать ситуацию, когда значение строки 
Код

"аленушка" и "иванушка"

Хотя, в общем - да, по идее, если у нас используется честный квотинг, то по честному эти кавычки должны быть задаблквочены.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
motorway
Дата 28.1.2013, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 578
Регистрация: 2.3.2008

Репутация: нет
Всего: 0



Цитата

Ну хотя бы сообщить, что надо делать, если первый/последний (одновременно и по отдельности) символ - НЕ кавычка. Или сообщить, что в других, допустим, местах, кавычек не бывает...

Я действительно сначала написал, что "если первый и последний не кавычки, то ничего не делать". Но потом стёр, так как это не добавляет новой информации.
За код спасибо, применю, если ещё актуально и в базе они сами это не убрали.
Со строковыми функциями MySQL работал меньше, + когда условие. Почему-то когда возникает условие, это наталкивает на мысль о том, что надо использовать IF ..., а можно ограничиться WHERE. Несколько раз писал хранимые процедуры, там действительно это нужно было - вот теперь поэтому подумал здесь, что тут решение более сложное, и надо писать подобное условие. 
Цитата

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

Я и не надеялся, важно было понять, как сделать условие. Но LIKE упростил дело, я о нём не подумал сразу.

Это сообщение отредактировал(а) motorway - 28.1.2013, 17:13
PM MAIL   Вверх
Akina
Дата 28.1.2013, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Цитата(Zloxa @  28.1.2013,  17:51 Найти цитируемый пост)
регекспы?

Не люблю регэкспы... хотя тут всё зависит от реализации. Если LIKE разворачивается в регэксп - то реги лучше. Иначе лучше таки LIKE. Надо пробовать... или копать исходники.

Добавлено через 14 минут и 32 секунды
Проделал эксперимент - подсчёт количества записей по неиндексированному текстовому полю InnoDB-таблицы доменных имен лога (17кк записей, результат 1.2кк) по шаблону: LIKE 'd%u' и RLIKE 'd*u' . Регэксп работал в полтора раза дольше.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 28.1.2013, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Akina @  28.1.2013,  18:28 Найти цитируемый пост)
Регэксп работал в полтора раза дольше. 

Всего лишь? Странно smile
Но я ж грю, мне твое решение всетке больше понравилось.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 29.1.2013, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 45
Всего: 454



Zloxa

Любая бумага должна вылежаться ©

Этот вопрос (разворачивается ли LIKE в RLIKE) меня самого давно интересовал... не настолько, чтобы всё бросить и ставить эксперимент, но где-то там зудело... а тут и оно всплыло, и таблица подходящая под рукой, и даже время на попробовать.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 29.1.2013, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Akina @  29.1.2013,  09:39 Найти цитируемый пост)
Этот вопрос (разворачивается ли LIKE в RLIKE) меня самого давно интересовал

На самом деле полно косвенных признаков, что нет.
На вскидку:
- Like, в отличии от rlike, умеет работать с мультибайтом
- like 'xxx%', в отличии от rlike, умеет использовать индекс.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0767 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.