|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
Добрый день, имеется xml DECLARE @xml XML SELECT @xml = N' <methodResponse> <params> <param> <value><array><data> <value><struct> <member><name>NAME</name><value><string>Name_1</string></value></member> <member><name>ID_MESSAGE</name><value><i4>30512</i4></value></member> </struct></value> <value><struct> <member><name>ID_MESSAGE</name><value><i4>30445</i4></value></member> <member><name>NAME</name><value><string>Name_2</string></value></member> </struct></value> </data></array></value> </param> </params> </methodResponse> ' тех секций <value><struct>.........</struct></value> там конечно больше как при помощи sql запроса извлечь тот <value><i4> ID_MESSAGE, которому соответствует определенный NAME = 'Name_1' ? что то типа того: SELECT dat.value('name[1]','varchar(max)') AS Name, dat.value('value[1]','varchar(max)') AS Value FROM @xml.nodes('/methodResponse/params/param/value/array/data/value/struct') col(dat) WHERE dat.value('value[1]','varchar(max)')='Name_1' ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 12:50 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
Tavocer, вот так можно получить все, и, потом, условием в where оставить только тот, что тебе нужен (в принципе, это то, что ты и просил) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
(No column name)(No column name)Name_130512Name_230445 но,имхо, условием в xpath-запросе было бы лучше , но как это сделать не соображу ... :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 13:19 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
court но,имхо, условием в xpath-запросе было бы лучше Код: sql 1. 2. 3. 4. 5. 6.
(No column name)(No column name)Name_130512 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 13:42 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
court, спасибо большое, на самом деле, xml немного сложнее, есть еще один элемент с <i4>: <value><struct> <member><name>ID_MESSAGE</name><value><i4>30445</i4></value></member> <member><name>NAME</name><value><string>Name_2</string></value></member> <member><name>USER_LIST</name><value><i4>39159</i4></value></member> </struct></value> поэтому ваш sql запрос находит оба <i4> прошу прощения, что я изначально упростил задачу, как переписать запрос, чтобы нашло только те значения ID_MESSAGE <value><i4> в узле, где NAME = Name_2 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 14:00 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
Tavocer court, спасибо большое, на самом деле, xml немного сложнее, есть еще один элемент с <i4>: <value><struct> <member><name>ID_MESSAGE</name><value><i4>30445</i4></value></member> <member><name>NAME</name><value><string>Name_2</string></value></member> <member><name>USER_LIST</name><value><i4>39159</i4></value></member> </struct></value> поэтому ваш sql запрос находит оба <i4> прошу прощения, что я изначально упростил задачу, как переписать запрос, чтобы нашло только те значения ID_MESSAGE <value><i4> в узле, где NAME = Name_2 так, как-то, если правильно понял ... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
(No column name)(No column name)Name_230445 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 14:13 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
court, Ура, получилось, спасибо огромное! Теперь бы еще разобраться, как это работает )))) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 14:51 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
court но,имхо, условием в xpath-запросе было бы лучше , но как это сделать не соображу ... :) Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 16:04 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
invm court но,имхо, условием в xpath-запросе было бы лучше , но как это сделать не соображу ... :) Код: sql 1. 2. 3. 4. 5.
Tavocer, обратите внимание Если xml хоть сколько-нибудь большой, - будет получше моих "эплаев" ) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 16:30 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
invm, Абсолютно красиво! А можно еще через переменную? Вот так не получается (The argument 1 of the XML data type method "nodes" must be a string literal.): DECLARE @xml XML, @Nazvanie nvarchar(max)='Name_1'; SELECT @xml = N'...nash xml...' select t.n.value('(member[name = "NAME"]/value/string)[1]', 'varchar(100)'), t.n.value('(member[name = "ID_MESSAGE"]/value/i4)[1]', 'int') from @xml.nodes('/methodResponse/params/param/value/array/data/value/struct[member[name = "NAME" and value[string = "'+@Nazvanie +'"]]]') t(n); ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 16:31 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
Tavocer, Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 16:46 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
court, спасибо, очень помогли ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 16:55 |
|
Как написать SQL запрос для извлечения определенных данных из XML
|
|||
---|---|---|---|
#18+
В общем, если не мудрить, то так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Если xml объемный и надо быстро, то так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2020, 18:13 |
|
|
start [/forum/topic.php?fid=46&msg=40018343&tid=1685408]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
108ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 213ms |
0 / 0 |