Форум: "Базы";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
ВнизSQL. Помогите с запросом. Найти похожие ветки
← →
fluxion © (2007-12-27 04:37) [0]Здравсвуйте!
Есть база(*.MDF),есть таблица (подключение через ADOQuery). В один из столбцов идет запись данных в текстовом ввиде:"Месяц=Август|Год=2007|Адрес=ул.Ленина,д.3|Квартира=12".и т.д. Подскажите как можно при помощи SQL запроса разбить это поле на 4 части без знака (|), чтобы создались 4 новых столбца ?
← →
Ega23 © (2007-12-27 07:56) [1]Где создались? Непосредственно в таблице, или в выборке?
← →
fluxion © (2007-12-27 08:25) [2]В таблице.
← →
Sergey13 © (2007-12-27 08:43) [3]> [2] fluxion © (27.12.07 08:25)
А не проще будет в цикле пройтись?
← →
ЮЮ © (2007-12-27 09:09) [4]
UPDATE MyTable
SET
MonthOfXXX = dbo.Extract("Месяц=", "|", MyField),
YearOfXXX = dbo.Extract("Год=", "|", MyField),
Street = dbo.Extract("Адрес=", "|", MyField),
Room = dbo.Extract("Квартира=", "|", MyField)
где
0MonthOfXXX, YearOfXXX, Street, Room созданные текстовые поля таблицы MyTable,
MyField - её рудиментарное поле,
dbo.Extract - UDF, примерно такая:CREATE FUNCTION dbo.Extract(@Name varchar(255), @Delimiter varchar(255), @Value varchar(255))
RETURNS varchar(255) AS BEGIN
declare @p integer
declare @Result varchar(255)
SET @p = CHARINDEX (@Name , @Value);
if @p = 0 RETURN ""
SET @Result = SUBSTRING(@Value, @p + LEN(@Name), LEN(@Value) - @p - LEN(@Name) + 1)
SET @p = CHARINDEX (@Delimiter, @Result);
if @p > 0 SET @Result = SUBSTRING(@Result, 1, @p - 1)
RETURN @Result
END
← →
ЮЮ © (2007-12-27 09:15) [5]Дабы не затереть нужное, можно добавить
UPDATE MyTable
SET
MonthOfXXX = dbo.Extract("Месяц=", "|", MyField),
YearOfXXX = dbo.Extract("Год=", "|", MyField),
Street = dbo.Extract("Адрес=", "|", MyField),
Room = dbo.Extract("Квартира=", "|", MyField)
WHERE
(MonthOfXXX IS NULL) and (YearOfXXX IS MULL) and (Street IS NULL) and (Room IS NULL)
← →
fluxion © (2008-01-04 12:45) [6]Функцию dbo.Extract создал. Создал 4 пустых столбца. Запрос UPDATE MyTable прописал в ADOQuery.SQL.Text на нажатие кнопки.
1. При запуске программы в DBGrid в столбцах Month и Year отображается Месяц и Год нормально, все на месте... (как так? ведь запроса UPDATE Mytable еще небыло). В двух других столбцах ничего. (?)
2.При нажатии кнопки для выполнния запроса выдает ошибку: "ADOQuery: CommandText does not return a result set". Почему? Подскажите...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.044 c