2015-11-10 5 views
1

Я пытаюсь использовать оператор case с десятичной запятой, и чтобы результат был также десятичным. В качестве примера я использую приведенную ниже инструкцию. В моей таблице myDollar является десятичной, но здесь «newDollar» является varChar. Я пробовал использовать бросок, и я не могу понять, где/как его использовать.MySQL Тип данных, вычисленное поле

select tab.*, 
    case when flag = '1' 
     then (myDollar * .525) 
      else '0' end as newDollar 
       from `xxx` tab; 

Заранее благодарен!

+0

Вы пробовали без кавычек? – Nailgun

+0

http://stackoverflow.com/questions/8005445/mysql-datatype-conversion-from-varchar-to-float –

+0

Или http://stackoverflow.com/questions/22278733/converting-varchar-to-decimal-values- in-mysql –

ответ

0

Почему бы не использовать IF?

select *, 
if (`flag` = '1', `myDollar` * 0.525 , 0.0) as newDollar 
      from `tab`; 
+0

Спасибо! Выглядит намного чище, по какой-то причине я выбираю случай -_- – kenznpunky

+0

@kenznpunky не забудьте поставить флажок «решено» на вас, если все в порядке;) – Blag

+0

О, спасибо! Не понял, я должен это сделать - :) – kenznpunky

0

Принимая во внимание, что MySQL будет выполнять вычисления с плавающей точкой с двойной точностью, если вы не принудите его, попробуйте это. Обратите внимание, что 0 в else 0 не содержит кавычек. Это потому, что вам требуется числовое значение, а не значение символа.

SELECT CAST(case when flag = '1' then (myDollar * 0.525) 
           else 0 end 
      AS DECIMAL(10,2)) as newDollar 
+0

Спасибо! Это имеет смысл сейчас. – kenznpunky

Смежные вопросы