Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сократить формулу
|
|||
|---|---|---|---|
|
#18+
Добрый день! Я в PostgreSQL не силен, потому простой вопрос... Есть команда update main_tab set massa = round( cast(massa + 0.6 * cast( cast(size as text) as numeric)/1000 as numeric), 1 ) massa float4 size varchar20 Можно ли как то сократить формулу? Мне кажется, что я лишнего нагородил с cast-ами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 10:19 |
|
||
|
Сократить формулу
|
|||
|---|---|---|---|
|
#18+
на самом деле можно сделать всего лишь на 1 меньше. Но можно записать компактнее. massa = round(( massa + (0.7 * size::numeric) /1000)::numeric, 1); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 12:08 |
|
||
|
Сократить формулу
|
|||
|---|---|---|---|
|
#18+
update main_tab set massa = round( massa + 0.6 * size::real/1000 ); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 12:15 |
|
||
|
Сократить формулу
|
|||
|---|---|---|---|
|
#18+
Запустил для поверки select massa, round(( massa + (0.7 * size::numeric) /1000)::numeric, 1) from main_tab ERROR: cannot cast type character varying to numeric SQL state: 42846 select massa, round(( massa + (0.7 * size::text::numeric) /1000)::numeric, 1) from main_tab where pgroup = 'Б0753' Вот так работает, только это тоже самое - вид сбоку :) select massa, round( massa + 0.6 * size::real/1000,1 ) from main_tab ERROR: cannot cast type character varying to real SQL state: 42846 А вот так select massa, round( massa + 0.6 * size::text::real/1000,1 ) from main_tab ERROR: function round(double precision, integer) does not exist SQL state: 42883 Hint: No function matches the given name and argument types. You may need to add explicit type casts. Мда... Че то я в сильной задумчивости... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 13:08 |
|
||
|
Сократить формулу
|
|||
|---|---|---|---|
|
#18+
Как у тебя обьявлен size? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 13:48 |
|
||
|
Сократить формулу
|
|||
|---|---|---|---|
|
#18+
varchar(20) Я в первом посте написал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 13:56 |
|
||
|
Сократить формулу
|
|||
|---|---|---|---|
|
#18+
DmGrsize::real ERROR: cannot cast type character varying to real SQL state: 42846Какая версия постгреса? У меня на 8.1 работает. DmGrМда... Че то я в сильной задумчивости...попробуйте так select massa, round( (massa + 0.6 * size::text::real/1000)::numeric, 1 ) from main_tab ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 14:13 |
|
||
|
Сократить формулу
|
|||
|---|---|---|---|
|
#18+
Так я уже писал... select massa, round(( massa + (0.7 * size::text::numeric) /1000)::numeric, 1) from main_tab where pgroup = 'Б0753' Вот так работает, только это тоже самое - вид сбоку :) select massa, round( (massa + 0.6 * size::text::real/1000)::numeric, 1 ) from main_tab Версия 7.4.2 забыл написать, пардон. Собственно непонятно почему нельзя сразу из varchar в numeric И непонятно, почему round нужен аргумент double? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 14:29 |
|
||
|
Сократить формулу
|
|||
|---|---|---|---|
|
#18+
DmGr Собственно непонятно почему нельзя сразу из varchar в numeric И непонятно, почему round нужен аргумент double? round(dp or numeric) (same as input) round to nearest integer round(42.4) 42 round(v numeric; s int) numeric round to s decimal places round(42.4382; 2) 42.44 можно вообще только кастом: select (3.1415::float8 + 0.6 * '13.187'::float8/1000)::numeric(19,1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 15:00 |
|
||
|
Сократить формулу
|
|||
|---|---|---|---|
|
#18+
DmGrВерсия 7.4.2 забыл написать, пардон. Собственно непонятно почему нельзя сразу из varchar в numericСмотрите \dC в psql. На версии 8.1 можно: Код: plaintext 1. 2. 3. DmGrИ непонятно, почему round нужен аргумент double?Смотрите \df round. Видно, что есть три разных функции. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2007, 15:08 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34489864&tid=2005508]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 410ms |

| 0 / 0 |
