Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проверка строки регулярным выражением
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. Буду рад если вы поможете продвинуться в проблеме. В БД в одном из полей хранится json-строка, назовем ее s. Такого вида: Код: javascript 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. На входе у нас есть ключ (key), и id_value объекта в массиве(array). Особенности массива: ключ заявлен как массив, но там будет всегда один объект, ключ завершается символом ]. Ключей может быть много, в каждом ключе object_global и array только 1. Json-строка хранится без пробелов и переносов строк (это я для удобочитаемости). Необходимо определить регулярным выражением, что для данного ключа, в массиве есть объект с данным id_value, или нет такого объекта. Вот такая конструкция - s ILIKE concat('%', 'key', '%:', 'id_value', ',%') - перескакивает на массивы для других ключей, а мне хотелось ограничить поиск массивами конкретного ключа. Заранее благодарю за любую помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 11:54 |
|
||
|
Проверка строки регулярным выражением
|
|||
|---|---|---|---|
|
#18+
Названия object_global и array нам известны, на них можно завязываться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2016, 11:56 |
|
||
|
Проверка строки регулярным выражением
|
|||
|---|---|---|---|
|
#18+
execa, А может с json работать как с json а не как со строкой? Типа как то так: Код: 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Это в лоб, просто идея, а так допилить. Соответственно в запросе 'key_1' - это элемент в котором ищем и 1 - значение которое ищем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2016, 11:14 |
|
||
|
Проверка строки регулярным выражением
|
|||
|---|---|---|---|
|
#18+
execa, попробуйте jsquery расширение для работы с jsonb jsquery там есть необходимые вам операторы: проверять что объект является массивом, содержит ключ и тд мое примерное решение, только не проверял на запуск: проверяем, что ключ ИД в вложенном массиве в ключ key_1 является numeric (так возмжоно но не факт отсекутся NULL значения что равносильно отсутствию элемента) Код: sql 1. если у вас это получится то работать должно быстрее, при условии наличия GIN индекса, и использования jsonb вместо json ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2016, 11:24 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39348948&tid=1996852]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
168ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 277ms |

| 0 / 0 |
