Zapytanie SQL dla rekordów XML

0

Witam:)

W bazie danych istnieje kolumna "dane" z rekordami zawierającymi dane w formacie XML, np.

<?xml version="1.0" encoding="windows-1252"?> <root> <dane> <klient>John Pedro</klient> <liczba>1234</liczba> <serial>12345678</serial> <klient2>Andrzej Gołota</klient2> <serial2>87654321</serial2> <klient3>Doda</klient3> </dane> </root>

I teraz jak najlepiej sformułować zapytanie SQL żeby wyszukać rekord w którym np. KLIENT="John Pedro" ?

Obecnie robię to tak:


MojeQuery.SQL.Text:='SELECT ID, dane FROM tablica WHERE dane LIKE :Search';

MojeQuery.ParamByName('Search').AsString:='%<KLIENT>John Pedro</KLIENT>%';

Jestem raczej początkującym programistą jeśli chodzi o bazy danych, więc zapewne o jakimś mądrzejszym rozwiązaniu jeszcze nie wiem:)
Używam pakietu MySQL.

Proszę o wskazówki.

Pzdr.
Marogo

0

Jak masz nowego MySQL'a i nie potrzebujesz aby dzialalo na starszych wersjach mozesz sie zainteresowac tym:

http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html

0

a nie można tego zapisać po ludzku do bazy w osobnych kolumnach anie w xmlu??
BTW a jak już chcesz to mieć tak jak teraz to się zainteresuj FullTextSearch bo tak jak masz teraz to to nie używa indeksów

0
Misiekd napisał(a)

a nie można tego zapisać po ludzku do bazy w osobnych kolumnach anie w xmlu??
BTW a jak już chcesz to mieć tak jak teraz to się zainteresuj FullTextSearch bo tak jak masz teraz to to nie używa indeksów

Nie można, bo ilość rekordów w XML-u może być dość duża i mieć różne nazwy, więc dlatego w ten sposób są umieszczane dane w tabeli.

Muszę się zainteresować metodą ExtractValue dedykowaną dla pól zawierających XML, która pojawiła się w wersji 5.1.5 MySQL-a (dzięki @reichel za namiary!!).

Pzdr.
Marogo

1 użytkowników online, w tym zalogowanych: 0, gości: 1