$sql="SELECT CASE WHEN id>2 THEN sex WHEN id<2 THEN NAME END AS xingbie FROM userinfo"------------ 像这样的sql语句啊 能不能改成if else 的? 不是存储过程啊......如果写存储过程,估计也没法写成符合我上面要求的查询来吧
本帖最后由 xuzuning 于 2010-06-12 08:45:48 编辑
能否解释下,从没见过这种写法...也看不懂啊... case end 我还可以理解 但这个就理解不了了... 我原来是这样写的,但是运行不了 SELECT IF (id>2) THEN sex ELSE THEN NAME END IF AS X FROM userinfo
CASE
WHEN id>2 THEN sex
WHEN id<2 THEN NAME
END
AS xingbie
FROM userinfo"------------
像这样的sql语句啊
能不能改成if else 的?
不是存储过程啊......如果写存储过程,估计也没法写成符合我上面要求的查询来吧
能否解释下,从没见过这种写法...也看不懂啊...
case end 我还可以理解
但这个就理解不了了...
我原来是这样写的,但是运行不了
SELECT
IF (id>2)
THEN sex
ELSE
THEN NAME
END IF
AS X
FROM userinfo
手册中如是说:
IF(expr1,expr2,expr3)
如果 expr1 为真(expr1 <> 0 以及 expr1 <> NULL),那么 IF() 返回 expr2,否则返回 expr3。IF() 返回一个数字或字符串,这取决于它被使用的语境:
mysql> SELECT IF(1>2,2,3);
-> 3
mysql> SELECT IF(1<2,'yes','no');
-> 'yes'
mysql> SELECT IF(STRCMP('test','test1'),'no','yes');
-> 'no'如果 expr2 或 expr3 明确地为 NULL,那么函数 IF() 的返回值类型为非 NULL 列的类型。(这在选择在 MySQL 4.0.3 中新加入)。 expr1 是作为一个整数值被计算的,这就意味着,如果测试的是一个浮点型或字符串值,就必须进行比较操作:
mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0);
-> 1在上面第一种情况下,IF(0.1) 返回 0,是因为 0.1 被转换为一个整数值,返回 IF(0) 的测试结果。这可能不是你所期望的。在第二种情况下,比较测试原浮点数是否为一个非零值。比较的结果被作为整数使用。 缺省的 IF() 返回值类型 (当结果存储在临时表中时,这是非常重要的) 在 MySQL 3.23 中按下列方式确定: 表达式 返回值
表达式(expr2)或表达式(expr3)返回值为字符串 字符串
表达式(expr2)或表达式(expr3)返回值为浮点型值 浮点型
表达式(expr2)或表达式(expr3)返回值为整型 整型
如果表达式(expr2)和表达式(expr3)均是字符串,同时两个字符串均是忽略字母大小写的,那么返回值也是忽略字母大小写的(从 MySQL 3.23.51 开始)。
原来好像没见过这么写的啊,sqlserver里面好像没有这样写的
mysql用的也不多啊...所以很郁闷啊...