if (字段a=$x){echo 字段b;}else{echo 字段a;}
像这样一句话在 select (在这里实现) as find from...可以用一个函数实现吗

解决方案 »

  1.   

    有,请看:IF(expr1,expr2,expr3) 
    如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。mysql> SELECT IF(1>2,2,3);        -> 3mysql> SELECT IF(1<2,'yes ','no');        -> 'yes'mysql> SELECT IF(STRCMP('test','test1'),'no','yes');        -> 'no'如果expr2 或expr3中只有一个明确是 NULL,则IF() 函数的结果类型 为非NULL表达式的结果类型。 expr1 作为一个整数值进行计算,就是说,假如你正在验证浮点值或字符串值,   那么应该使用比较运算进行检验。 mysql> SELECT IF(0.1,1,0);        -> 0mysql> SELECT IF(0.1<>0,1,0);        -> 1在所示的第一个例子中,IF(0.1)的返回值为0,原因是 0.1 被转化为整数值,从而引起一个对 IF(0)的检验。这或许不是你想要的情况。在第二个例子中,比较检验了原始浮点值,目的是为了了解是否其为非零值。比较结果使用整数。
      

  2.   

    楼上正解,用IF()函数,或者CASE WHEN.CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result ...] [ELSE result] END CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END The first version returns the result where value=compare_value. The second version returns the result for the first condition that is true. If there was no matching result value, the result after ELSE is returned, or NULL if there is no ELSE part. mysql> SELECT CASE 1 WHEN 1 THEN 'one'
        ->     WHEN 2 THEN 'two' ELSE 'more' END;
            -> 'one'
    mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
            -> 'true'
    mysql> SELECT CASE BINARY 'B'
        ->     WHEN 'a' THEN 1 WHEN 'b' THEN 2 END;
            -> NULL