![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
motorway |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
MySQL
Подскажите, как сделать запрос на UPDATE поля: если первый и последний символ - кавычка " - то надо оставить, то, что между ними. Сам бы смог найти и сделать, но нужно быстро. -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Неправда. Самому сделать НАСТОЛЬКО ЭЛЕМЕНТАРНУЮ вещь быстрее, чем ждать у моря погоды пока кто-нить ответит. Кабы мог - то мог бы как минимум сообразить, какие ещё сведения необходимо сообщить. И сообщил бы сразу. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
motorway |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Я с MySQL давно работаю и привык делать сам или искать в Сети перед поиском вопроса, но перед этим сидел 6 часов за PHP и PHPMyAdmin, и если не считать того, что давно болею, то как минимум уже устал настолько, что не мог сидеть за компом.
Заказчику нужно было сдавать срочно сайт, поэтому оставлять это в неисправленном виде не хотел. Понятно, что тут можно обойтись IF, SUBSTR, SUBSTR_INDEX или LIKE - посидев некоторое время в поисках, вполне всё можно сделать. Мне же нужно было срочно. Что тут надо было ещё сообщить, не знаю - версию MySQL что ли? -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
|||
|
||||
Akina |
|
||||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Ну хотя бы сообщить, что надо делать, если первый/последний (одновременно и по отдельности) символ - НЕ кавычка. Или сообщить, что в других, допустим, местах, кавычек не бывает...
Именно. Других вариантов нет, надеяться на то, что чудесным образом под это дело имеется спецово заточенная функция... Так что - отобрать все записи, где нужное поле соответствует шаблону, и вырезать нужную часть
Это в предположении, что с остальными записями ничего делать не надо. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
регекспы? Хотя предложенный тобой вариант мне понравился больше чем первый, что пришел мне в голову. Наверное, по хорошему, надо бы еще добавить реплейс даблквоты на одноквоту. Наверное, еще как-то надо обдумать ситуацию, когда значение строки
Хотя, в общем - да, по идее, если у нас используется честный квотинг, то по честному эти кавычки должны быть задаблквочены. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
motorway |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 578 Регистрация: 2.3.2008 Репутация: нет Всего: 0 |
Я действительно сначала написал, что "если первый и последний не кавычки, то ничего не делать". Но потом стёр, так как это не добавляет новой информации. За код спасибо, применю, если ещё актуально и в базе они сами это не убрали. Со строковыми функциями MySQL работал меньше, + когда условие. Почему-то когда возникает условие, это наталкивает на мысль о том, что надо использовать IF ..., а можно ограничиться WHERE. Несколько раз писал хранимые процедуры, там действительно это нужно было - вот теперь поэтому подумал здесь, что тут решение более сложное, и надо писать подобное условие.
Я и не надеялся, важно было понять, как сделать условие. Но LIKE упростил дело, я о нём не подумал сразу. Это сообщение отредактировал(а) motorway - 28.1.2013, 17:13 -------------------- Russian Pascal Developer Network - Сеть разработчиков на языке программирования Pascal/Object Pascal Форум Delphi/Kylix, Free Pascal Compiler/Lazarus, PascalABC.NET Онлайн-кинотеатр |
||||
|
|||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Не люблю регэкспы... хотя тут всё зависит от реализации. Если LIKE разворачивается в регэксп - то реги лучше. Иначе лучше таки LIKE. Надо пробовать... или копать исходники. Добавлено через 14 минут и 32 секунды Проделал эксперимент - подсчёт количества записей по неиндексированному текстовому полю InnoDB-таблицы доменных имен лога (17кк записей, результат 1.2кк) по шаблону: LIKE 'd%u' и RLIKE 'd*u' . Регэксп работал в полтора раза дольше. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
Всего лишь? Странно ![]() Но я ж грю, мне твое решение всетке больше понравилось. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 45 Всего: 454 |
Zloxa
Любая бумага должна вылежаться © Этот вопрос (разворачивается ли LIKE в RLIKE) меня самого давно интересовал... не настолько, чтобы всё бросить и ставить эксперимент, но где-то там зудело... а тут и оно всплыло, и таблица подходящая под рукой, и даже время на попробовать. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 53 Всего: 161 |
На самом деле полно косвенных признаков, что нет. На вскидку: - Like, в отличии от rlike, умеет работать с мультибайтом - like 'xxx%', в отличии от rlike, умеет использовать индекс. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Составление SQL-запросов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |