|
|
|
Очередной запрос. Кейсы
|
|||
|---|---|---|---|
|
#18+
Доброго вечера! Столкнулся с такой вот штукой: Код: plsql 1. 2. 3. 4. Которая выводит, например, "true". Куда нужно впихнуть 'A' так, чтобы оно вывело "true, 'A'" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 19:11:30 |
|
||
|
Очередной запрос. Кейсы
|
|||
|---|---|---|---|
|
#18+
VanillaNInja, SELECT case when(1=1) then (select count(*)=0 from t1 where id<10) end, 'A'; например ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2014, 19:49:20 |
|
||
|
Очередной запрос. Кейсы
|
|||
|---|---|---|---|
|
#18+
Да, неверно сформулировал пример. Хочется выводить эту самую "А" внутри кейса. Просто понять не могу почему, но когда пытаюсь Код: plsql 1. 2. 3. 4. Не получается. Если же после условия 'where'- то такая афера тоже не сработает, так как там должен быть только один столбец. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 10:35:27 |
|
||
|
Очередной запрос. Кейсы
|
|||
|---|---|---|---|
|
#18+
VanillaNInjaДа, неверно сформулировал пример. Хочется выводить эту самую "А" внутри кейса. Просто понять не могу почему, но когда пытаюсь Код: plsql 1. 2. 3. 4. Не получается. Если же после условия 'where'- то такая афера тоже не сработает, так как там должен быть только один столбец. никак штатными методами, нельзя из выражения 2 колонки вернуть. можно 2 case написать просто PS: в теории должна работать конструкция вида Код: plsql 1. 2. 3. 4. 5. 6. но не работает что еще более странно при этом row_to_json в такой же формулировке работает: Код: plsql 1. 2. 3. 4. 5. 6. row_to_json ------------------------------- {"field1":false,"field2":"A"} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 11:10:32 |
|
||
|
Очередной запрос. Кейсы
|
|||
|---|---|---|---|
|
#18+
Ого, вот это неожиданный поворот для меня. А бился над этим куском достаточно продолжительное время. :-( Спасибо огромное за помощь :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 11:43:39 |
|
||
|
Очередной запрос. Кейсы
|
|||
|---|---|---|---|
|
#18+
Maxim BogukPS: в теории должна работать конструкция вида Код: plsql 1. 2. 3. 4. 5. 6. но не работает Максим, а почему не так: Код: sql 1. 2. 3. 4. как я понимаю, select ().* требует явного объявления составного типа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 16:41:01 |
|
||
|
Очередной запрос. Кейсы
|
|||
|---|---|---|---|
|
#18+
Павел ЛузановMaxim BogukPS: в теории должна работать конструкция вида Код: plsql 1. 2. 3. 4. 5. 6. но не работает Максим, а почему не так: Код: sql 1. 2. 3. 4. как я понимаю, select ().* требует явного объявления составного типа потому что просили вернуть 2 колонки а не ROW(false,'A') не всегда явное обьявление составного типа надо... например работают: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. т.е. никакой никакой разумной системы понять когда информация о именах и типах колонок останется в ROW() а когда нет. Возможно вот правки сделанные по вот этому репорту: http://www.postgresql.org/message-id/flat/545CF0AC.9040809@dunslane.net]http://www.postgresql.org/message-id/flat/545CF0AC.9040809@dunslane.net ситуацию исправят в 9.4. --Maxim Boguk www.postgresql-consulting.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 22:21:26 |
|
||
|
Очередной запрос. Кейсы
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Спасибо за разъяснения! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 00:12:31 |
|
||
|
Очередной запрос. Кейсы
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, в случае с кейсами эта конструкция похоже принудительно кастуется в record, а не row, поэтому разворачивание и не работает. Что, наверное, и правильно т.к. кейс в общем случае для разных строк может выдать разные типы строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 06:29:23 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38801283&tid=1998362]: |
0ms |
get settings: |
8ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
189ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 491ms |

| 0 / 0 |
