![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание sql запроса
ganda © (2008-10-23 09:06:00)имеется таблица Table1, там же есть поле Field1 (тип строковой) в нем содержится допустим символ "Y" его нужно заменить на "y". Собственно вопрос как можно реализовать одним sql-запросом такую замену?
Anatoly Podgoretsky (2008-10-23 19:31:00) [1]> stas (23.10.2008 12:05:18) [18]
С какой стати все, когда в вопросе, только те, которые равны Y
Anatoly Podgoretsky (2008-10-23 19:30:00) [2]> ganda (23.10.2008 9:44:12) [12]
Ты не в той таблице делаешь обновление, в вопросе Table1, а в запросе Table, кроме того обновляешь не те значения, которые согласно твоему вопросу, равны Y, а все буквы Y.
Правильный$Вася (2008-10-23 13:54:00) [3]
> но не факт что это облегчит работу серваку.
заметно облегчит
хотя бы тем, что модифицироваться будут только нужные записи, в лог наката и в статистику не будет литься мусор
stas (2008-10-23 13:35:00) [4]Palladin © (23.10.08 12:24) [22]
исходя из того что мы знаем можно лишь написать
Where field1 like'%y%'
но не факт что это облегчит работу серваку.
Johnmen (2008-10-23 13:25:00) [5]Тупо бессмысленно говорить вообще о поле, у которого либо 'Y' либо 'N'
:))
Ega23 (2008-10-23 12:36:00) [6]
> как это как.. тебе незнаком раздел update запроса - where ?
Известен. Мне полное условие задачи неизвестно: как часто встречается y в записях, нужно заменять только те поля, которые равны 'y' или и 'By' и 'yYy' и т.п.
Поэтому в такой ситуации говорить о какой-то оптимизации - тупо бессмысленно.
Palladin (2008-10-23 12:24:00) [7]
> stas © (23.10.08 12:18) [20]
как это как.. тебе незнаком раздел update запроса - where ?
stas (2008-10-23 12:20:00) [8]Palladin © (23.10.08 12:09) [19]
я по поводу единоразового обновления, если конечно это будет где-то в программе выполнятся постоянно, то конечно же я против такого решения.
stas (2008-10-23 12:18:00) [9]Palladin © (23.10.08 12:09) [19]
Ну, а как по другому?
Palladin (2008-10-23 12:09:00) [10]Ну кто из нас интересней это еще вопрос :) А вот обновлять всесто тыщь миллионов ради "символ "Y" его нужно заменить на "y""это даже не знаю как сказать... подход довольно гени тальный... прошу прощенья за мой французский...
stas (2008-10-23 12:05:00) [11]Palladin © (23.10.08 10:03) [15]
Правильный$Вася (23.10.08 12:00) [17]
Вот интересные вы люди, а что делать ему если надо обновить все данные?
Правильный$Вася (2008-10-23 12:00:00) [12]
> Ega23 © (23.10.08 10:25) [16]
ты не прав
лог изменений накатывается, кэш данных забивается, индексы неиспользуются
системная статистика сбивается
Ega23 (2008-10-23 10:25:00) [13]
> Вне зависимости от реальной необходимости? То бишь все сто
> тыщь миллионов? Даже если там только одна запись с Y тебе
> нужно все сто тыщь миллионов изменить? :)
Если это разовая операция и исполняется вместо десяти секунд пять минут - то пофиг.
А вот если это не разовая - тут уже да.
Palladin (2008-10-23 10:03:00) [14]
> А мне как раз и нужно все записи изменить!
Вне зависимости от реальной необходимости? То бишь все сто тыщь миллионов? Даже если там только одна запись с Y тебе нужно все сто тыщь миллионов изменить? :)
ganda (2008-10-23 09:59:00) [15]А мне как раз и нужно все записи изменить!
Сергей М. (2008-10-23 09:48:00) [16]
> ganda (23.10.08 09:44) [12]
Плохое решение. И не только для Оракла.
ты апдейтишь всезаписи в таблице, вне зависимости от реальной необходимости.
ganda (2008-10-23 09:44:00) [17]Спасибо за ответы! Решение найдено
update Table set Field1 = REPLACE(Field1, 'Y', 'y')
Сергей М. (2008-10-23 09:29:00) [18]
> речь пока не идёт, о создание программы
Как это не идет ?!
Ты уже шлепнул на форму некий компонент Table1, следовательно, ужеположил начало реализации алгоритма программы..
easy (2008-10-23 09:28:00) [19]http://www.adp-gmbh.ch/ora/sql/upper.html
Сергей М. (2008-10-23 09:26:00) [20]
> построение sql-запроса в Oracle
SQL92/99 одинаков везде - текст интересующего UPDATE-запроса будет практически одинаков что в Oracle, что на Луне.
А знание расширенных SQL-диалектов ("глубокие знания"), специфичных для той или иной СУБД (в твоем случае Oracle), для решения такой тривиальной задачи вовсе не требуется.