Главная страница
    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.044 c
4-1190892438
apic
2007-09-27 15:27
2008.06.08
hIcon


3-1199832163
Евгений Р.
2008-01-09 01:42
2008.06.08
Где ошибка в синтаксисе?


15-1208872237
No_Dead
2008-04-22 17:50
2008.06.08
Дипломный проект и авторские права


2-1210748961
dima
2008-05-14 11:09
2008.06.08
SkinCrafter


2-1210764128
Михаил
2008-05-14 15:22
2008.06.08
Interbase Express





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский