Мне нужно обрезать конечные 0 и десятичную точку, я попробовал следующий код, и он не будет работать. Я использую PostgreSQL, и конечный результат будет выглядеть примерно так (от 1234.00 до 1234 футов)

SELECT TRIM(TRAILING "0" FROM ROUND("Length"::numeric * 3.28084, 2)) || ''ft'' AS "Length"

Код ошибки, который я получаю:

ERROR:  column "Length" does not exist
LINE 1: SELECT TRIM(TRAILING '0' FROM ROUND("Length"::numeric * 3.28...
                                            ^                       ^
0
Haoyu Li 26 Апр 2019 в 19:30

2 ответа

Лучший ответ

Попробуй это:

select concat(substring(cast(cast(1234.00 as decimal(10,2)) as varchar(50)),1,
position('.' in cast(cast(1234.00 as decimal(10,2)) as varchar(50)))-1),' ft')
as Length

Результат испытаний:

DB <> Fiddle

Обновить:

Я просто нашел более легкий

select concat(cast(1234.00 as decimal(10,0)),' ft') as Length
from ...

Замените 1234.00 на имя вашего столбца и добавьте предложение «от».

0
Gen Wan 26 Апр 2019 в 17:46

Я бы просто сделал:

SELECT ("Length"::numeric * 3.28084)::int || 'ft' as Length

Вы можете round() также. Суть в том, чтобы преобразовать в целое число, чтобы у вас не было десятичных дробей.

0
Gordon Linoff 26 Апр 2019 в 17:48