SQL语句中Case 的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL语句中Case 的用法相关的知识,希望对你有一定的参考价值。

参考技术A Select Case 语句在有多个可能的条件必须被检查时使用。与 If 语句不同,Select Case语句在找到匹配的Case 表达式并执行了Case 表达式和下一个Case 表达式之间的语句后将立即跳出。如果没有匹配的Case 表达式,将执行其它语句。

Case Else 与lse 的意义相同。

Case 语句能接受各种类型的(作为判断条件的)表达式。表达式可以是单一值、由逗号分隔的一组值、能返回值的函数、用"To"关键字指定的值的范围或者使用"Is"关键字对等式或不等式进行测试。您可以连接不同类型的不同表达式,只要将它们用逗号分开即可。
参考技术B 不用CASE WHEN 的做法。源代码如下:

string sql="select * from CONTACTPERSON ,CUSTOMER where CONTACTPERSONID='"+strContactid+"' and CONTACTPERSON.CUSTOMERID=CUSTOMER.CUSTOMERID";
DataSet ds=new DataSet();
ds=Common.GetDSCommon(sql);

if(ds.Tables[0].Rows[0]["CONTACTPERSONSEX"].ToString()=="0")

ds.Tables[0].Rows[0]["CONTACTPERSONSEX"]="男";

else

ds.Tables[0].Rows[0]["CONTACTPERSONSEX"]="女";


使用CASE WHEN做法。

string sql="select CUSTOMER.*,CONTACTPERSON.CONTACTPERSONNAME,CONTACTPERSON.CONTACTPERSONBIRTHDAY,CONTACTPERSON.CONTACTPERSONPOSITION,CONTACTPERSON.CONTACTPERSONDEPTNAME,";
sql+="CONTACTPERSON.TELEPHONE,CONTACTPERSON.MAIL,CONTACTPERSON.CITY,CONTACTPERSON.PROVINCE,CONTACTPERSON.POSTCODE,CONTACTPERSON.COUNTRY,CONTACTPERSON.MEMO,";
sql+="CONTACTPERSON.DIRECTOR,";

sql+="case when CONTACTPERSON.CONTACTPERSONSEX = '0'then '男' when CONTACTPERSON.CONTACTPERSONSEX= '1' then '女' end as CONTACTPERSONSEX from CUSTOMER ,CONTACTPERSON where CONTACTPERSONID='"+strContactid+"' and CONTACTPERSON.CUSTOMERID=CUSTOMER.CUSTOMERID";
可以看出这样明显加长了,SQL语句,这样做有什么好处呢?不太清楚,可能会提高效率吧。大家的看法呢?

请教delphi中有关case语句的用法

参考技术A case是个分支语句。就是按照case
...
of
中间的那个内容,对应是什么,就运行那个后面的语句。比如succ(sun)表示sun后面的那个元素,就应该是
mon
。然后case
mon
of,就是只运行mon后面的那个语句,也就是write('monday');然后就跳到end后面了。

以上是关于SQL语句中Case 的用法的主要内容,如果未能解决你的问题,请参考以下文章

case when用法sql

sql2005中的case when语句怎么用啊?请写出一个常见的例子

SQL语句中case,when,then的用法

sql 中 case when 语法

Oracle的sql语句中case关键字的用法

SQL查询语句SELECT中带有case when嵌套子查询判断的问题