Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.043 c
15-1208936973
Kolan
2008-04-23 11:49
2008.06.08
Новости проекта DMClient.


15-1209119813
sql
2008-04-25 14:36
2008.06.08
MS SQL 2000


15-1209317345
No_Dead
2008-04-27 21:29
2008.06.08
Что пишут в логах?


15-1208950492
sds
2008-04-23 15:34
2008.06.08
Уравнение с двумя неизвестными:


2-1210767363
evgenij
2008-05-14 16:16
2008.06.08
Scroll in DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский