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
……………..
………………

浙公网安备 33010602011771号