在sql查询中规定了列

时间:2014-03-22 09:35:14

标签: sql sql-server sql-server-2008

表1:

kalaname | to | tbox | tkh | price | pricek

sql查询是:

select kalaname , if(to=0,'0',str(to) + '*' + str(tbox)) as computeto , 
       tkh , price , pricek 
from table1    ------- Error

如何将护发素放在色谱柱上?

2 个答案:

答案 0 :(得分:3)

你必须使用CASE ... WHEN ... ELSE ... END子句。

case when to = 0 
          then '0'
          else str(to) + '*' + str(tbox)
end as computeto

顺便说一句,你可能会对连接中str的结果感到惊讶。 您可能需要LTRIM / RTRIM结果为str。

类似

LTRIM(RTRIM(STR(to))) + '*' + LTRIM(RTRIM(STR(to)))

REPLACE(STR(to), ' ', '')

答案 1 :(得分:1)

使用CASE声明。尝试这样的事情:

select 
  kalaname , 
  CASE WHEN (to = 0) THEN '0', ELSE str(to) + '*' + str(tbox) END as computeto, 
  tkh , price , pricek 
from table1

根据totbox列的类型,转换可能和字符串连接可能无法获得预期的结果。您可以尝试使用CAST(to AS VARCHAR(20)) + '*' + CAST(tbox AS VARCHAR(20))代替。