Transact SQL教程(三)

使用CASE控制语句执行

假设你想在网页上显示你喜欢站点的名称,URL,和关于它的简单描述。更进一步,你想在列出这些站点时在站点的名称旁边指明每一个网站的类型。比如,在政府机关网站的旁边,你会显示单词Government;在商业网站的旁边,显示单词Commercial。为了做到这一点,你可能会创建一个具有4列的表。前三列和原先的一样,分别是名称列,URL列,简单描述列。另外你可能会添加一个新列,该列为每一个网站的类型。

但在实际上,你不需要这样做…有一种能获得同样的结果但是更好的方法。

按照上面的做法,你的数据表中就会包含多余的信息。因为在URL列中已经包含了每一个网站类型的信息。通过查看每一个URL最后的三个字母,你就能确定某个网站是商业的,政府的和教育的等等。所以你不需要在数据表中添加新列重复同样的信息。但是当你在读取数据表中的记录时你是如何在URL列中获取该信息的呢?你可以使用CASE表达式来做到这一点。如下面的例子所示:

SELECT

(

CASE

WHEN site_url LIKE “%edu” THEN “Educational”

WHEN site_url LIKE “%gov” THEN “Government”

WHEN site_url LIKE “%com” THEN “Commercial”

ELSE “Other”

END

) “TYPE”,

site_name “Name”,

site_URL “URL”,

site_desc “Description”

FROM site_directory

 

注意

字母.edu,.gov,和.com都是顶级域名的例子,目前还有许多的顶级域名在使用,比如,假如某个网站的域名以字母.cn结尾,这就指明该网站建在中国大陆。

当上面的SELECT语句执行时,你就会接收到正确的结果。为了返回正确的值,我们使用CASE表达式对site_url列进行了检测。比如,当site_url列的值以三个字母edu结尾时,就会返回值Educational。下面就是从该查询返回结果的一个例子:

Type
Name
URL
Description

……………..
………………

posted @ 2012-04-19 11:35  mimo0  阅读(55)  评论(0)    收藏  举报