Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.08;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
2-1210942831
Artin
2008-05-16 17:00
2008.06.08
Хочетья список как Object Inspector в Дельфи.


15-1209124924
sql
2008-04-25 16:02
2008.06.08
MS SQL 2000


15-1209107695
Slider007
2008-04-25 11:14
2008.06.08
С днем рождения ! 25 апреля 2008 пятница


2-1211120855
Franzy
2008-05-18 18:27
2008.06.08
Как запустить из программы другую (консольную) программу?


2-1211113014
Franzy
2008-05-18 16:16
2008.06.08
Быстрый вопрос про Try...Except