Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
Нужно сэмулировать условное выражение Код: plaintext Пример. Надо чтобы в переменную _var записалось значение 'yes' Код: plaintext Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 14:56 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
Через CASE вроде можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:06 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
RTFM: автор Код: plaintext в частности - автор Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:09 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
Слово эмуляция немного неточно употребил, каюсь Мне нужно, чтобы выполнилось след. выражение Код: plaintext Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:12 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
Dan BlackСлово эмуляция немного неточно употребил, каюсь Мне нужно, чтобы выполнилось след. выражение Код: plaintext Код: plaintext 1. печальны дела твои, оспидя ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:35 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
да, учитывая, что конструкция мне даётся извне в вышеприведенном виде. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:37 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
не поленюсь, проделаю чисто механическое: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. и что у вас вызвало затруднения??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:40 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
Dan Blackда, учитывая, что конструкция мне даётся извне в вышеприведенном виде. Код: plaintext 1. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:47 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
Dan Blackда, учитывая, что конструкция мне даётся извне в вышеприведенном виде. Код: plaintext 1. 'select xxxxxxxxxx ? yyyyyyyy : zzzzz' и хотите его "выполнить"? так распарсьте внутре некой ф-ии - найдите , что у вас xxxxxxxx, а что уууууууууууу, и zzzzzzz. в простых случаях можно конечно цепляться к фрагментам "'select ", " ? " и " : " (и попросту механически всовывать тудыть " CASE WHEN ", " THEN " и " ELSE " реплейсом, а в конец автоматом END) но в сложных (если условия могут быть вложены) - надо, имхо, аккуратную рекурсивную парсилку писать (с учетом всего возможного входного синтаксиса "выражений"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:50 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
Есть много логических выражений Код: plaintext Были бы там конструкции с двумя параметрами, не парился, создал бы нужные операторы и всё заработало бы, а тут нужен оператор, который понимает три параметры, или какая-нибудь другая фишка, о которой я не знаю. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:51 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
4321надо, имхо, аккуратную рекурсивную парсилку писать (с учетом всего возможного входного синтаксиса "выражений"). нет ни желания, ни времени писать парсилку из-за одного "неподдерживаемого" условного выражения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:54 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
Ёш имхо - SELECT потеряли Код: plaintext 1. 2. 3. 4. 5. но опять таки - если нет вложенных конструкций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:54 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
вложенные конструкции есть есть и им нет числа ;) Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 15:58 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
Dan Black 4321надо, имхо, аккуратную рекурсивную парсилку писать (с учетом всего возможного входного синтаксиса "выражений"). нет ни желания, ни времени писать парсилку из-за одного "неподдерживаемого" условного выражения.нет - не пишите. никто ж не заставляет. а если приведете конкретный синтаксис вложений ваших условностей и т.п. - можно покумекать, как выйти малой кровью. С другой - все тройные операторы сводимы к двойным (если хорошо покумекать): у вас в реале : (буленов результат) ?(оператор1) выражение1 : (оператор2) выражение2 т.е: (операнд1 оператор1 операнд2) оператор2 операнд3 если оператор1 при фалсе в операнд1 вернет специяльную (выколотую из всех возможных значений для операнд2) величинку, а оператор3 увидев такую величинку во входящем значении вернет операнд3 без разговоров - вы сведете задачу к операторам от 2-х величин. правда - некомутативным операторам, а как все там у вас обставлено в синтаксисе скобочками - надо еще подумать. в качестве ведичинки предлагаю "НеХренаЖСебеВеличинка" но трудность в том, что боюсь и ? и : - могут оказаться уже занятыми операторами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 16:15 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
кстати, и выкалывать не надо. надо (для "?") в случае фалсе возвращать значение заведомо другого типа (специально его можно даже ввести в перечень типов), а для ":" писать два оператора - для разных входных пар типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 16:21 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
4321кстати, и выкалывать не надо. надо (для "?") в случае фалсе возвращать значение заведомо другого типа (специально его можно даже ввести в перечень типов), а для ":" писать два оператора - для разных входных пар типов. Хороший вариант, даже рабочий. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2007, 17:02 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
Dan BlackХороший вариант, даже рабочий. Спасибогм. исчо вчера подумал, что вариант нерабочий. кажется в постгре из одной ф-ии (типизированных переменных) трудно вернуть разнотипные результаты. разве что определив тип возврата record. с другой была такая идея: 2 (и более) операнда могут рассматриваться и как один комплексный операнд (вектор, или сложный). т.ч. можно либо составить компаунды вида (булен, число), либо (число,число) - в зависимости от порядка действия операторов. (можно ли и как им рулить в постгре - крайне неясно). для примера проверим в каком порядке выполняются сравнения: Код: plaintext 1. 2. 3. посему я попробовал сделать так: Код: 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. но, к сожалению, ошибся в рассчетах: Код: plaintext 1. далее, даже переписав через компаундный вид (bool, numeric) сразу предвидим проблемы с заданием (навязыванием) порядка выполнения в сложных выражениях вида a=b ? c+d : e*f , т.е. таких, где скобками не выделяются операнды целиком. можно утверждать, что замена "?" на ")?(" и : на "):(" - была бы безусловно верна, если только правильно поставить и начальную скобку (перед а в данном случае) и конечную (после f), но вот тут-то и, кажется, засада (для сложно-сочиненных выражений). какую-то парсилку придется писать даже и тут. (проблема, кстати, была бы и для некомпаундных типов промежуточных возвратов - она таки в синтаксическом разборе порядка действия) если таки что придумаете - черканите хотя б идейку - интересно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 11:39 |
|
||
|
Эмуляция условного выражение
|
|||
|---|---|---|---|
|
#18+
4321[если таки что придумаете - черканите хотя б идейку - интересно. Так как работа разовая, то посчитали, что экономически более целесообразно посадить 10 операторов, которые за день набьют данные в базу, чем иметь секс с разбором подобных выражений или ломать голову, как эту задачу лучше решить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2007, 17:10 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34854566&tid=2004954]: |
0ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
58ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 367ms |

| 0 / 0 |
