|
iif и конкатенация
|
|||
---|---|---|---|
#18+
Вот такая заковыка получается, когда после iif идет конкатенация: Код: sql 1. 2. 3.
Но: Код: sql 1. 2. 3.
Если уж добивать, то везде одинаково. Но лучше все-таки без хвостов. Firebird 3.02 Windows Server ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 23:17 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyansky, Без хвостов не получится, ибо это, типа, стандарт. Скорее всего пересмотрят, если подтвердился, чтобы оба были с хвостами. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.02.2020, 23:56 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyanskyresult ='0123456789' -- никаких лишних пробелов! Значит их кто-то принудительно обрезал, ибо, как уже сказано, это стандарт. Ну или ты просто их не видишь, поскольку они... хммм... пробелы. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2020, 01:28 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyansky Вот такая заковыка получается, когда после iif идет конкатенация: Код: sql 1. 2. 3.
Но: Код: sql 1. 2. 3.
Во втором случае получается Код: sql 1.
Проверить просто Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2020, 08:20 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
Да, был неправ, прошу простить, хвосты всегда есть: Код: sql 1. 2. 3.
Однако, неприятно неожиданный какой стандарт. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2020, 18:09 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyansky, А если явно закастить оба аргумента в iif() к varchar-ам? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.02.2020, 23:49 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
А если помеcтить iif() в trim? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2020, 12:38 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
Vlad F А если явно закастить оба аргумента в iif() к varchar-ам? Если привести аргументы к varchar, нормально получается. Только длинно и некрасиво. Да выкрутиться можно кучей способов, если знать. Только вот знания обретаются уже в бою, это не есть хорошо. Напарываешься, чешешь репу, обходишь. Пожелание к разработчикам документации: хорошо бы такое не слишком интуитивное поведение все-таки описывать, даже если оно и по стандарту. Понять, где собака зарыта, можно, но предугадать трудно, пока не споткнешься. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2020, 20:19 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyansky, таки не поверишь оно там описано. Но надо знать где. Не могу же я в каждую функцию работающую со строками предупреждение вешать ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2020, 20:28 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
Просто не надо использовать строковые литералы. Вообще. Никогда. И будет вам счастье. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2020, 23:06 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
Симонов Денис таки не поверишь оно там описано. Но надо знать где. Не могу же я в каждую функцию работающую со строками предупреждение вешать "Тип возвращаемого результата: тот же что и аргумент функции resultT, если выражения resultT и resultF имеют одинаковый тип, в противном случае происходит преобразование в тип с наибольшей вместимостью." Да, согласен, этот текст описывает поведение почти достаточно. Прошу прощения за невнимательность. К этому еще бы прибавить знание, что строковые литералы приводятся к типу CHAR, а не VARCHAR, что тоже не вполне очевидно. Dimitry Sibiryakov Просто не надо использовать строковые литералы. Вообще. Никогда. И будет вам счастье. А как без них, например, сложить имя с фамилией через пробел? Пробел как оформить без литерала? Ввести переменную :space и присвоить ей значение (опять же через литерал)? Держать специальную таблицу с кусками строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 15:23 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyanskyА как без них, например, сложить имя с фамилией через пробел? Никак не надо их складывать. Но если решил нарушать первую НФ - готовься к геморрою, всё закономерно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 15:36 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyanskyК этому еще бы прибавить знание, что строковые литералы приводятся к типу CHAR строковые литералы ни к чему не приводятся, они просто типа CHAR(N), если конечно не делать приведение специально ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 16:12 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
Причем тут НФ? Вопрос вообще никакого отношения к отношениям не имеет, и это не тавтология. Вопрос не о размещении данных в реляционных таблицах, а о логике их обработки, в частности, о логике представления. Что такой запрос нарушает? select firstname || ' ' || surname from persons Да, можно склеить и на клиенте. Так рассуждать, так и вообще никакие операции на сервере не нужны, только "возьми сырые данные" - "отдай сырые данные". ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 16:20 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
Симонов Денис строковые литералы ни к чему не приводятся, они просто типа CHAR(N), если конечно не делать приведение специально [/quot] Хорошо, надо иметь знание, что строковые литералы именно типа CHAR(N), а не VARCHAR(N). Из чего это следует? С числовыми константами, кстати, тоже не очевидно. Какого типа константа 1? А константа 1.0? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 16:26 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyanskyВопрос не о размещении данных в реляционных таблицах, а о логике их обработки, в частности, о логике представления. Что такой запрос нарушает? Результат запроса можно (а зачастую и нужно) рассматривать как реляционную таблицу. И запрос, который запихнул два атрибута в одно поле, нарушает именно её, первую НФ. shalamyanskyТак рассуждать, так и вообще никакие операции на сервере не нужны, только "возьми сырые данные" - "отдай сырые данные". Да. Именно это я и талдычу всю свою сознательную жизнь. Но всё равно находятся топикстартеры, которые героически ищут и успешно находят геморрой себе на всю голову. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 16:31 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyanskyКакого типа константа 1? А константа 1.0? NUMERIC(1,0) и NUMERIC(2,1) соответственно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 16:32 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Да. Именно это я и талдычу всю свою сознательную жизнь. Но всё равно находятся топикстартеры, которые героически ищут и успешно находят геморрой себе на всю голову. Да бог с ними, с топикстартерами. Но вот люди стараются, развивают PSQL, пишут функции IIF и иже с ними. Для кого, спрашивается? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 16:37 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyanskyДля кого, спрашивается? Дык для топикстартеров же. Они же не просто самостоятельно ищут приключений, они активно требуют от других предоставить им больше возможностей выстрелить себе во всё, что только можно представить. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 16:42 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Какого типа константа 1? А константа 1.0? NUMERIC(1,0) и NUMERIC(2,1) соответственно. Верю, куда деться. А как это узнать, не задавая вопрос гуру на форуме? Где-нибудь может оказаться важным, как оказалось важным знание, что строковые литералы - это CHAR. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 16:46 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyansky Какого типа константа 1? А константа 1.0? от диалекта зависит ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 16:54 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyansky Dimitry Sibiryakov Какого типа константа 1? А константа 1.0? NUMERIC(1,0) и NUMERIC(2,1) соответственно. Верю, куда деться. А как это узнать, не задавая вопрос гуру на форуме? Где-нибудь может оказаться важным, как оказалось важным знание, что строковые литералы - это CHAR. чаще всего в стандартах. там очень много букв. ЗЫ кроме меня кто-нибудь помнит, что в фортране переменные I, J, K, L, M - целочисленные, остальные - вещественные. а если написать строчечку в начале - то комплЕксные. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 16:57 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Дык для топикстартеров же. Они же не просто самостоятельно ищут приключений, они активно требуют от других предоставить им больше возможностей выстрелить себе во всё, что только можно представить. Я понял, вы апологет чистого реляционного стиля. Позиция, достойная разработчика сервера СУБД. Проблему с глаз долой, из сердца вон. Но если задачу не решать на уровне СУБД, её все равно придется решать так или иначе, и не факт, что уровнем выше её решение будет проще, или эффективнее, или надежнее. Но с точки зрение сервера, конечно, ни к чему брать на себя лишнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 17:03 |
|
iif и конкатенация
|
|||
---|---|---|---|
#18+
shalamyansky, shalamyanskyПозиция, достойная разработчика сервера СУБД. забей. Дима вообще не занимается прикладным программированием, поэтому и ворчит. Если бы разработчики FB его слушали, то в сервере до сих пор бы встроенных функций не было, которые массово появились в 2.1. А по поводу строковых литералов это просто надо знать, оно не только в Firebird так ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2020, 17:27 |
|
|
start [/forum/topic.php?fid=40&msg=39933094&tid=1560423]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
191ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 312ms |
0 / 0 |