|
FB2.5 - CASE: автоматическое приведение литеральных констант к типу CHAR()
|
|||
---|---|---|---|
#18+
Привет всем. FB2.5 Выполним в ISQL запрос: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Видно, что результат содержит два лишних концевых пробела. Видимо, из за того, что разница длин между результатом '12' и максимально длинным значением '1234' в ветке CASE составляет как раз 2 символа. Исправить можно приведением типа CAST( ... AS VARCHAR(...) ) Это ошибка или так и должно быть? С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 14:17 |
|
FB2.5 - CASE: автоматическое приведение литеральных констант к типу CHAR()
|
|||
---|---|---|---|
#18+
Polesov, это нормально ибо все строковые литералы имеют тип CHAR(N) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 14:34 |
|
FB2.5 - CASE: автоматическое приведение литеральных констант к типу CHAR()
|
|||
---|---|---|---|
#18+
Firebird_2_5\doc\sql.extensions\README.data_type_results_of_aggregations.txt 3) Case: a) If any of the data types in DTS is character string, then: 1) If all data types in DTS are fixed-length character strings, then the result is also a fixed-length character string, else a variable-length character string. The resulting string length in characters is equal to the maximum of the lengths in characters of the data types in DTS. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 14:39 |
|
FB2.5 - CASE: автоматическое приведение литеральных констант к типу CHAR()
|
|||
---|---|---|---|
#18+
Симонов Денис, но я не ожидал получить результат с 2-мя лишними концевыми пробелами. Логичнее было бы в данном случае привести результат к типу CHAR(2). С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 14:41 |
|
FB2.5 - CASE: автоматическое приведение литеральных констант к типу CHAR()
|
|||
---|---|---|---|
#18+
Polesov, Длина выходного поля определяется на этапе препарирования запроса. А поскольку не факт что там тупое условие 0=0 движок не знает какой получится выходная длина и тупо берёт максимально возможную. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 14:43 |
|
FB2.5 - CASE: автоматическое приведение литеральных констант к типу CHAR()
|
|||
---|---|---|---|
#18+
Понятно, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2015, 15:05 |
|
FB2.5 - CASE: автоматическое приведение литеральных констант к типу CHAR()
|
|||
---|---|---|---|
#18+
Симонов Денисэто нормально ибо все строковые литералы имеют тип CHAR(N) А если в коде FB в том месте где указано что все строковые литералы имеют тип CHAR(N), прописать там вместо этого VARCHAR(N)? Мир не остановится? :) VARCHAR(N) вроде эффективней чем CHAR(N), т.к. не нужно всё время паддить пробелами. Ну по логике :) В любом случае - то что словил автор несколько обескураживает. Эдакий "привет всем из семидесятых". ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 00:24 |
|
FB2.5 - CASE: автоматическое приведение литеральных констант к типу CHAR()
|
|||
---|---|---|---|
#18+
-"привет всем из семидесятых" пишите письма в спортлото SQL-комитет ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 01:56 |
|
FB2.5 - CASE: автоматическое приведение литеральных констант к типу CHAR()
|
|||
---|---|---|---|
#18+
dimitr-"привет всем из семидесятых" пишите письма в спортлото SQL-комитет Да я в курсе что они крышуют SQL-сервера :) Хорошая крыша, кстати, в целом :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 02:40 |
|
FB2.5 - CASE: автоматическое приведение литеральных констант к типу CHAR()
|
|||
---|---|---|---|
#18+
-А если в коде FB в том месте где указано что все строковые литералы имеют тип CHAR(N), прописать там вместо этого VARCHAR(N)? Мир не остановится? :)Для себя имеешь право, берешь исходники и компилируешь для себя приватный билд отклоняющийся от стандарта. А если по рабочекрестьянски то пишешь в требуемом месте cast к нужному типу и вперед. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2015, 11:14 |
|
|
start [/forum/topic.php?fid=40&fpage=76&tid=1562829]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
27ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 159ms |
0 / 0 |