|
|
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
Подскажите плз. Есть идея передать в ХП в качестве параметра строку с какаим нибудь разделителем. Так вот вопрос как ее распарсить,т.е найти все ее состовляющие части. Типа '123;34;1;......' Количество знаков между разделителем заранее не известно. Что не могу сообразить как ето сделать внутри ХП. ЗЫ Или не парить себе мозги и делать ето на клиенте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2002, 19:15:56 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2002, 19:42:12 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
CHARINDEX ( expression1 , expression2 [ , start_location ] ) в цикле.... типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2002, 20:04:39 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
declare @i int, @str varchar(128) set @str='1;12;123;1234;12345;123456;' --советую ставить разделитель и в самом конце set @i=charindex(';',@str) while @i>0 begin print substring(@str,1,@i-1) set @str=right(@str,len(@str)-@i) set @i=charindex(';',@str) end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2002, 20:12:21 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
Как-то видел такое красивое решение. Суть в том, что разбирать ничего не надо. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2002, 09:58:10 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
Всем большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2002, 10:44:29 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
не перестаю удивлятся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2002, 11:56:26 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
Если у вас SQL2000, то могу предложить такой способ Код: plaintext 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. Преимущество на мой взгляд в том, что можно передавть в процедуру очень большие массивы данных без их дополнительного разбора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2002, 12:00:43 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
Glory Снимаю шляпу!!! Но к сожалению 7. Вот скоро перскочим на 2000 ,тогда будем юзать. Еще раз всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2002, 12:16:01 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
2Glory ИМХО, при больших массивах данных лучьше на клиенте создать врем. таблицу, заполнить и вызвать ХП. Такой вариант будет создавать нагрузку на сервер в десятки (для больших массивах данных), или в сотни (для малых) раз меньше, чем sp_xml_preparedocument и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2002, 14:23:50 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2002, 18:46:12 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
2alexeyvg Не знаю, на очень больших не проверял. На паре тысяч все нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2002, 22:29:51 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
2Glory "На паре тысяч все нормально" - это значит, не медленнее, чем вариант с врем. таблицей или это значит, что визуально быстро? Я вот делал проверки и вроде-бы такой вариант (через xml) не позволяет достичь хотя-бы десятков разборов в секунду на двухпроцессорном сервере. Т.о. как основной метод передачи массивов в процедуру это не подходит. Я сам активно использую sp_xml_preparedocument, но только для задачи импорта/экспорта. Кроме того, Вы знаете, что sp_xml_preparedocument на время своей работы блокирует SQLDMO? И, как я подозреваю, не масштабируется при добавлении процессоров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 11:41:47 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
Ok Постараюсь сравнить с получением конкретных цифр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2002, 22:58:25 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
SergSuper прикольно, только они не по порядку выдаются :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2002, 14:38:00 |
|
||
|
Разобрать строку
|
|||
|---|---|---|---|
|
#18+
2alexeyvg Возвращаясь так сказать к нашим баранам, т.е. XML-ям Условия тестов 1. Клиентское приложение - простейший VB Script Код: plaintext 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 2. Исходные данные - xml файлы в формате <root><node value="0000001"/>...</root> 3. Каждый исходный файл обрабатывался 5 раз. выбиралось максимальное время. Как видно из скрипта засекалось время работы процедуры(почти). 4. Сервер Microsoft SQL Server 2000 - 8.00.679 (Intel X86) Aug 26 2002 15:09:48 Copyright (c) 1988-2000 Microsoft Corporation Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 3) 2xPIII-733, RAM 2Gb (SQL reserved 1,7) Результаты Код: plaintext 1. 2. 3. 4. 5. 6. Загрузка процессоров колебалась от 25 до 50% (начиная с 200 000) и была симметрично распределена на оба процессора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2002, 21:20:56 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3382&tid=1819011]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 328ms |

| 0 / 0 |
