![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как изменить значение всех строк с пом. sql [D6, dBase, FoxPro]
Леха © (2004-09-24 11:05:00)Имеются таблица adres, поле - naimen
Нужно чтобы каждое значение этого поля было изменено так. Пример. СергеевСН. Нужно чтобы стало Сергеев СН. Т.е. перед двумя посл. буквами поставить пробел. Как это сделать с пом. SQL
Johnmen (2004-09-24 13:15:00) [1]Главное, чтобы черных поменьше :)
сергей1 (2004-09-24 13:10:00) [2]согласен, надо было сразу в update условие where воткнуть, у всех есть свои белые пятна.
Johnmen (2004-09-24 13:01:00) [3]Да даже если "...не все строки менять надо...условие where в первом запросе..." всё равно - разврат...:)
сергей1 (2004-09-24 12:58:00) [4]sorry, в натуре погнал, я сначала думал что не все строки менять надо, а когда увидел что требуются все, стер условие where в первом запросе и опубликовал.
sniknik (2004-09-24 12:43:00) [5]> сергей1 (24.09.04 12:28) [14]
> типа такого (через дельфи) ...
ужас какой. тебя наверное специально нанимают когда нужно придать программе "задумчивости" для солидности. (ну типа, идут крутые расчеты...) ;о))
Johnmen (2004-09-24 12:41:00) [6]>сергей1 (24.09.04 12:28) [14]
Что за разврат ?
:)
сергей1 (2004-09-24 12:28:00) [7]типа такого (через дельфи)
form1.ADOQuery1.SQL.Text:='select key_field from table1';
form1.ADOQuery1.Open;
form1.ADOQuery1.First;
while not form1.ADOQuery1.Eof do
begin
form1.ADOQuery2.SQL.Text:='update table1 set f = '+
'LEFT(f, LEN(f) - 2) + '+quotedstr(' ') +' + RIGHT(f, 2) where key_field = '+
quotedstr(form1.ADOQuery1.fieldbyname('key_field').AsString) ;
form1.ADOQuery2.ExecSQL;
form1.ADOQuery1.Next;
end;
Леха (2004-09-24 12:22:00) [8]Запрос на SQL я действительно не знаю можно или нет так сделать. Да и SQL знаю лишь на 0,00005%. Типа select и т.д. Вот хотел и узнать можно или нет. Как?
Проблему решил но в Екселе. Теперь все верну назад в базу. Всем спасибо.
sniknik (2004-09-24 12:08:00) [9]> Пока информация в Екселе.
это сделать труднее чем в какойлибо другой базе, в том же аксессе.
(хотя и не сильно ;о)
)
> но проблема не в этом.
видимо она в том, что ты даже приведенный запрос выполнить не можеш?
Nikolay M. (2004-09-24 12:05:00) [10]Ты не поверишь, но в Екселе тоже есть функции ДЛСТР(), ЛЕВСИМВ() и ПРАВСИМВ()! Чего ты людям мозги пудришь?
Леха (2004-09-24 12:01:00) [11]Да мне это нужно сделать один раз. Пока информация в Екселе. Сохранить могу и в dbf и в базу акцессовскую, если потребуется. В дальнейшем конечно мне нужен акцесовский формат базы, но проблема не в этом. Как провести изменения со значениями....
Nikolay M. (2004-09-24 11:53:00) [12]Ты уж определись: циклом тебе, "чистым" СКЛ-ем или еще как? А то мы тебе скажем, как это циклом сделать, а ты потом потребуешь, чтобы еще под любую ОС, в любой среде программирования, при выключенном компьютере и по таймеру...
Леха (2004-09-24 11:48:00) [13]А как циклом сделать? Проверок не нужно ни каких. Просто в каждой строке изменить значение поля.
sniknik (2004-09-24 11:45:00) [14]> в МС СКЛ выглядело бы примерно так:
в jet (в том числе и для dBase) также.
Nikolay M. (2004-09-24 11:26:00) [15]Не знаю, как в фоксе со строковыми функциями, в МС СКЛ выглядело бы примерно так:
UPDATE
tab
SET
f = LEFT(f, LEN(f) - 2) + ' ' + RIGHT(f, 2)
Johnmen (2004-09-24 11:25:00) [16]Использовать ф-ии SUBSTRING и LEN (вроде так называются)
Sergey13 (2004-09-24 11:20:00) [17]А зачем именно SQL? "Чистый" SQL такого не могет вроде. Циклом пробежаться и все. К тому же проверочек можно наляпать, вдруг там где нить точки нет или одна буква большая.
Леха (2004-09-24 11:14:00) [18]ADO. Но могу настроить и БДЕ. Это не проблема. Главное хоть какой-нибудь вариант кода на SQL
Леха (2004-09-24 11:14:00) [19]ADO
msguns (2004-09-24 11:09:00) [20]Какой доступ (BDE,ADO,..) ?