2016-02-29 2 views
-1

У меня есть таблица с высотой, хранящейся в следующих форматах: примеры: 5 '6 " , 4' 10.5", 5 '3.75 "Как преобразовать их в дюймы SQL Server?Преобразование высоты фут дюймов до нескольких дюймов

+2

Что вы пробовали до сих пор? –

+0

еще ничего. Я знаю, что мне нужно использовать литье и каким-то образом разделять «,.» И «или использовать левые и правые функции – agalgay

+1

, это не то, что я подразумеваю. Я провел последние полчаса исследования решений. Я полагаю, это не значит. – agalgay

ответ

0

Используйте строковые функции, такие как CHARINDEX, LEFT, RIGHT ....

Запрос

select height, round((t.feet + t.feet2) * 12, 2) as inch from 
(
    select height, 
    left(height, charindex('''', height, 1) - 1) as feet, 
    cast((replace(right(height, len(height) - (charindex(' ', height, 1) - 1)), '''''', '')) as decimal(8,5)) * 0.0833333 as feet2 
    from tbl_Height 
)t; 

Это не может быть effici .
Но вы можете использовать это как подсказку.

+0

Мне удалось получить функцию x x 12 (см. Ниже - по какой-то причине не изменится на формат кода здесь), но мне нужно значение между «и» для общего значения дюймов для добавления к футы влево (enc.height, charindex ('' '', enc.height) -1) * 12 – agalgay

+0

Сочетание этого факта полем является varchar – agalgay

1

Что вы должны были сделать в первую очередь, это сохранить высоту как десятичную, а не varchar (x), описывающую высоту в дюймах. Тогда было бы легко получить ногу и дюймы (col/12 = foot, col% 12 = дюймы).

Поскольку вы уже испортили свои данные, вот способ, чтобы получить правильную высоту

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

DECLARE @t table(height varchar(15)) 
INSERT @t values 
('5'' 6"'), 
('4'' 10.5"'), 
('5'' 3.75"') 

SELECT 
    height, 
    LEFT(height, charindex('''', height) - 1) * 12+ 
    CAST(REPLACE(STUFF(height, 1, 
    CHARINDEX(' ', height), ''), '"', '') as decimal(5,2)) inchheight 
FROM @t 

Результата

height inchheight 
5' 6"  66.00 
4' 10.5" 58.50 
5' 3.75" 63.75 
Смежные вопросы