<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SmallKen's Blog &#187; Uncategorized</title>
	<atom:link href="http://smallken.no-ip.org/blog/category/uncategorized/feed" rel="self" type="application/rss+xml" />
	<link>http://smallken.no-ip.org/blog</link>
	<description>※歡迎光臨※ 知識分享、Linux、FreeBSD、教學、吉他、影音分享、RHCE</description>
	<lastBuildDate>Fri, 20 Nov 2009 16:17:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CNN 的莫拉克颱風報導</title>
		<link>http://smallken.no-ip.org/blog/2009/08/08/uncategorized/1301.html</link>
		<comments>http://smallken.no-ip.org/blog/2009/08/08/uncategorized/1301.html#comments</comments>
		<pubDate>Sat, 08 Aug 2009 14:04:16 +0000</pubDate>
		<dc:creator>smallken</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://smallken.no-ip.org/blog/2009/08/08/uncategorized/1301.html</guid>
		<description><![CDATA[中央氣象區太輕忽這次莫拉克颱風了，您看CNN對東亞地區的颱風報導，它們稱為超級大颱風(範圍大，大胖子)，這個颱風是整個包住了台灣跟菲律賓喔。 
雖然台北風和日麗，但是8/8屏東跟台東... ]]></description>
			<content:encoded><![CDATA[<p>中央氣象區太輕忽這次莫拉克颱風了，您看CNN對東亞地區的颱風報導，它們稱為超級大颱風(範圍大，大胖子)，這個颱風是整個包住了台灣跟菲律賓喔。<a href="http://smallken.no-ip.org/blog/wp-content/uploads/2009/08/CH005_0808_010734.jpg"><img title="CH005_0808_010734" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="334" alt="CH005_0808_010734" src="http://smallken.no-ip.org/blog/wp-content/uploads/2009/08/CH005_0808_010734_thumb.jpg" width="500" border="0" /></a> </p>
<p>雖然台北風和日麗，但是8/8屏東跟台東已經淹大水了，很遺憾過了幾年台灣整個社會的觀點還是”從台北看天下、不知人間疾苦”。</p>
]]></content:encoded>
			<wfw:commentRss>http://smallken.no-ip.org/blog/2009/08/08/uncategorized/1301.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>使用100%雲林縣斗南鎮當季馬鈴薯</title>
		<link>http://smallken.no-ip.org/blog/2009/04/17/uncategorized/1248.html</link>
		<comments>http://smallken.no-ip.org/blog/2009/04/17/uncategorized/1248.html#comments</comments>
		<pubDate>Fri, 17 Apr 2009 13:10:58 +0000</pubDate>
		<dc:creator>smallken</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://smallken.no-ip.org/blog/2009/04/17/uncategorized/1248.html</guid>
		<description><![CDATA[... ]]></description>
			<content:encoded><![CDATA[<p><img title="20090417 003" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="728" alt="20090417 003" src="http://smallken.no-ip.org/blog/wp-content/uploads/2009/04/20090417003.jpg" width="500" border="0" /></p>
]]></content:encoded>
			<wfw:commentRss>http://smallken.no-ip.org/blog/2009/04/17/uncategorized/1248.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>買保險前最重要的一件事?</title>
		<link>http://smallken.no-ip.org/blog/2008/06/10/uncategorized/673.html</link>
		<comments>http://smallken.no-ip.org/blog/2008/06/10/uncategorized/673.html#comments</comments>
		<pubDate>Tue, 10 Jun 2008 14:56:15 +0000</pubDate>
		<dc:creator>smallken</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://smallken.no-ip.org/blog/2008/06/10/uncategorized/673.html</guid>
		<description><![CDATA[我在大樹公司上班也快一年了，知道保險的事其實不多，不過我知道的應該還比一般人多才對，粗淺地來提醒大家買保險前必須注意的一件事。
我現在只針對傳統的壽險的主約保費來說，相對... ]]></description>
			<content:encoded><![CDATA[<p>我在大樹公司上班也快一年了，知道保險的事其實不多，不過我知道的應該還比一般人多才對，粗淺地來提醒大家買保險前必須注意的一件事。</p>
<p>我現在只針對傳統的壽險的主約保費來說，相對傳統型就是投資型，相對主約保費就是附約保費(醫療險...等等)，所以我只針對傳統的壽險的主約保費來說喔，這個就是指你繳滿了20年或30年你可以領回一筆錢這種。</p>
<p>當你在買保險時你有沒有想過你有買貴了嗎? 保險費是跟預定利率成反比的，那什麼是預定利率，假設你投保50萬，投保20年期，你每一年需要繳的錢不會是 50 萬/ 20 = 2.5 萬，會比2.5萬還少一點，因為你每年繳給保險公司的錢，像是保險公司要付你一點利息一樣，所以一定會比2.5萬少一點，那這中間像是利息的這個東西，但它不是利息，它的專有名詞就叫做"預定利率"，預定利率是跟著銀行利率調高調低，預定利率愈高時你買的保險其實是愈便宜的，預定利率愈低你買的保險是愈貴的，所以當你是民國80年左右買的保險，當時銀行利率7~8%，預定利率也差不多7~8%，當時買的保險要算是買便宜了，要是像我在95年買的保險的話，利率大概是1~2%，那我買的保險就會偏貴囉，這樣懂嗎? 所以買保險第一個重點先知道你現在買的保單，保險公司給的預定利率是多少?我覺得這是買保險最要知道的一件事情喔^^</p>
]]></content:encoded>
			<wfw:commentRss>http://smallken.no-ip.org/blog/2008/06/10/uncategorized/673.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>台灣犬 將名列國際新犬種</title>
		<link>http://smallken.no-ip.org/blog/2008/03/12/uncategorized/553.html</link>
		<comments>http://smallken.no-ip.org/blog/2008/03/12/uncategorized/553.html#comments</comments>
		<pubDate>Tue, 11 Mar 2008 16:07:26 +0000</pubDate>
		<dc:creator>smallken</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://smallken.no-ip.org/blog/2008/03/12/uncategorized/553.html</guid>
		<description><![CDATA[聯合新聞網 更新日期:2008/03/03 16:40 記者段鴻裕/苗栗報導

 
等待世犬聯盟6年觀察期 
一直被一般人說成「台灣土狗」的台灣犬，可望再經過6年的觀察期，就成為唯一代表台灣，而受到全球認可... ]]></description>
			<content:encoded><![CDATA[<blockquote><p>聯合新聞網 更新日期:<q>2008/03/03 16:40</q> <em>記者段鴻裕/苗栗報導</em></p>
</blockquote>
<p><a href="http://smallken.no-ip.org/blog/wp-content/uploads/2008/03/12639079.png"><img style="border-right: 0px; border-top: 0px; margin: 0px 5px 0px 0px; border-left: 0px; border-bottom: 0px" height="239" alt="12639079" src="http://smallken.no-ip.org/blog/wp-content/uploads/2008/03/12639079-thumb.png" width="240" align="left" border="0"/></a> </p>
<p>等待世犬聯盟6年觀察期 </p>
<p>一直被一般人說成「台灣土狗」的台灣犬，可望再經過6年的觀察期，就成為唯一代表台灣，而受到全球認可的世界新犬種，也是全球唯一的台灣犬種。 </p>
<p>台灣畜犬協會祕書長施三德說，2001年起，台灣犬已成為亞洲新犬種，世界畜犬聯盟（FCI）已核備，如能順利通過平均約10年的觀察期，將成為全球唯一的台灣犬種。 </p>
<p>施三德說，台灣犬的品種目前獲得亞洲畜犬聯盟的認可，有14個國家承認這是亞洲最新的犬種，也是台灣唯一的犬種，並於2004年獲世界畜犬聯盟核備，而「核備」，也就是對台灣犬品種純度的觀察期。 </p>
<p>目前已獲亞犬聯盟認可 </p>
<p>他說，以最近獲得世界畜犬聯盟承認的<a href="http://tw.news.yahoo.com/?">泰國</a>新犬種來說，泰國就等候世界聯盟長達10年的觀察期才獲得認可，以目前台灣犬的品種純度而言，通過應沒問題。 </p>
<p>在苗栗縣長期飼育台灣犬的葉碧洋說，當年，一群熱愛台灣犬的愛好者非常積極地育種，然後向亞洲畜犬聯盟申請登錄，接著舉辦單一犬種（台灣犬）的展覽評鑑，一步步把台灣犬推向國際，喜愛台灣犬的同好，都希望儘快通過世界畜犬聯盟觀察期，讓台灣犬正式成為國際舞台的一員。 </p>
<p>要確保有一致品種、基因 </p>
<p>施三德與葉碧洋說，台灣犬的觀察期，主要的在觀察品種純度、基因遺傳是否穩定，尤其是在了解犬種在觀察期限內，是否無法維持一貫的特徵，例如，長期以來，犬種的形態樣貌無變化、尾巴、頭尾、毛色角度、長寬等是否都能長期一致，確認保有一致的品種基因後，就能成為正式的世界新犬種。</p>
]]></content:encoded>
			<wfw:commentRss>http://smallken.no-ip.org/blog/2008/03/12/uncategorized/553.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DB2 9 SQL 筆記</title>
		<link>http://smallken.no-ip.org/blog/2007/12/30/uncategorized/438.html</link>
		<comments>http://smallken.no-ip.org/blog/2007/12/30/uncategorized/438.html#comments</comments>
		<pubDate>Sun, 30 Dec 2007 14:43:56 +0000</pubDate>
		<dc:creator>smallken</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://smallken.no-ip.org/blog/2007/12/30/uncategorized/438.html</guid>
		<description><![CDATA[SELECT  
// 'ABC' 固定值SELECT deptno ,admrdept ,'ABC' AS abc FROM department WHERE deptname LIKE '%ING%' ORDER BY 1;  
// department.* department 的所有 ColumnsSELECT deptno ,department.* FROM department WHERE deptname LIKE&#160;&#160; '%ING%' ORD... ]]></description>
			<content:encoded><![CDATA[<p><strong>SELECT</strong>  </p>
<p><font color="#000080">// 'ABC' 固定值</font><br />SELECT deptno ,admrdept ,<strong>'ABC'</strong> AS abc FROM department WHERE deptname LIKE '%ING%' ORDER BY 1;  </p>
<p><font color="#000080">// department.* department 的所有 Columns<br /></font>SELECT deptno ,<strong>department.*</strong> FROM department WHERE deptname LIKE&nbsp;&nbsp; '%ING%' ORDER BY 1;</p>
<p><strong>Fetch</strong>  </p>
<p><font color="#000080">// fetch first 3 rows only 只選前面3筆, 隨機3筆</font><br />SELECT years ,name ,id FROM staff <strong>FETCH FIRST 3 ROWS ONLY</strong>;  </p>
<p><font color="#000080">// 依 years 遞減排序, 選前面3筆</font><br />SELECT years ,name ,id FROM staff WHERE years IS NOT NULL <strong>ORDER BY years DESC</strong> FETCH FIRST 3 ROWS ONLY;  </p>
<p><font color="#000080">// 依 years 及 id 遞減排序, 選前面3筆<br /></font>SELECT years ,name ,id FROM staff WHERE years IS NOT NULL <strong>ORDER BY&nbsp; years DESC ,id DESC</strong> FETCH FIRST 3 ROWS ONLY;</p>
<p><strong>Correlation Name</strong></p>
<p><font color="#000080">// a 和 b 叫 Correlation Name, 若有要重覆使用 table 的話,可以使用 Correlation Name<br /></font>SELECT a.empno ,a.lastname FROM employee <strong>a</strong> ,(SELECT MAX(empno) AS&nbsp; empno FROM employee) AS <strong>b</strong> WHERE <strong>a.empno = b.empno</strong>;</p>
<p><strong>Renaming Fields</strong>  </p>
<p><font color="#000080">// AS 用來 Renaming Fields, 就是列出來欄位的標題，Renaming Fields 不可以使用在<strong>GROUP BY、WHERE、HAVING</strong></font><br />SELECT empno AS <strong>e_num</strong> ,midinit AS <strong>"m int"</strong> ,phoneno AS <strong>"..." </strong>FROM employee WHERE empno &lt; '000030' ORDER BY 1;  </p>
<p><strong>Null Values</strong>  </p>
<p><font color="#000080">// Null Values，不等於空白，使用AVG()、SUM()、MAX()、MIX() 時會略過NULL</font><br />SELECT AVG(comm) AS a1 ,SUM(comm) / COUNT(*) AS a2 FROM staff WHERE id &lt; 100;  </p>
<p><font color="#000080">// null 是特殊的一個值，是使用 IS NULL，IS NOT NULL 來比較，而非使用 '='</font><br />SELECT id, comm FROM staff WHERE id &lt; 100 AND <font color="#000080">id IS NOT NULL</font> AND<font color="#000080"> omm IS NULL</font> AND NOT comm <font color="#000080">IS NOT NULL </font>ORDER BY id;  </p>
<p><strong>Quotes</strong>  </p>
<p><font color="#000080">// 在字串表示裡面2個單引號'才算1個，→ JOHN JOHN'S 'JOHN'S' "JOHN'S"</font><br />SELECT 'JOHN' AS J1 ,'JOHN''S' AS J2 ,'''JOHN''S''' AS J3 ,'"JOHN''S"' AS J4 FROM staff WHERE id = 10;  </p>
<p><strong>Double-quotes</strong> </p>
<p><span id="more-438"></span></p>
<p><font color="#000080">// Renaming fields 使用雙引號"，也是2個雙引號才算1個→ USER ID D# #Y 'TXT' "quote" fld</font><br />SELECT id AS "USER ID" ,dept AS "D#" ,years AS "#Y" ,'ABC' AS "'TXT'" ,'"' AS """quote"" fld" FROM staff s WHERE id &lt; 40 ORDER BY "USER ID";  </p>
<p><strong>ANY、ALL</strong>  </p>
<p><font color="#000080">// ANY，job 只要符合後面全部清單其中一個；ALL，id 必須小於或等於後面清單全部<br /></font>SELECT id, job FROM staff WHERE job =<strong> ANY</strong> (SELECT job FROM staff) AND id &lt;=<strong> ALL</strong> (SELECT id FROM staff) ORDER BY id;  </p>
<p><strong>Multi-value Check</strong>  </p>
<p><font color="#000080">// 一次比較2個值<br /></font>SELECT id, dept, job FROM staff WHERE <strong>(id,dept) = (30,28)</strong> OR <strong>(id,years) = (90, 7)</strong> OR <strong>(dept,job) = (38,'Mgr')</strong> ORDER BY 1;  </p>
<p><font color="#000080">// 一次比較2個值也可以寫成如下<br /></font>SELECT id, dept, job FROM staff WHERE (<strong>id = 30 AND dept = 28</strong>) OR (<strong>id = 90 AND years = 7</strong>) OR (<strong>dept = 38 AND job = 'Mgr'</strong>) ORDER BY 1;  </p>
<p><strong>BETWEEN</strong>  </p>
<p><font color="#000080">// id 在不在 10~30 這個範圍，包含10與30本身，通常要前面數字小，後面數字大</font><br />SELECT id, job FROM staff WHERE id <strong>BETWEEN 10 AND 30</strong> AND id NOT BETWEEN 30 AND 10 AND NOT id NOT BETWEEN 10 AND 30 ORDER BY id;</p>
<p><font size="2"></font>
<p><strong>id BETWEEN 10 AND 30</strong> 等於 <strong>id&gt;=10 and id&lt;=30</strong>  </p>
<p><strong>EXISTS</strong>  </p>
<p><font color="#000080">// 只要另外一個 table 有存在的話</font><br />SELECT id, job FROM staff a WHERE <strong>EXISTS</strong> (SELECT * FROM staff b WHERE b.id = a.id AND b.id &lt; 50) ORDER BY id;  </p>
<p><strong>IN</strong></p>
<p><font color="#000080">// id 有無在 10 or 20 or 30</font><br />SELECT id, job FROM staff a WHERE <strong>id IN (10,20,30)</strong> AND<strong> id IN (SELECT id FROM staff)</strong> AND <strong>id NOT IN 99</strong> ORDER BY id;</p>
<p><font color="#000080">// 同時比對2欄位，有無符合在 select 語法找出來的資料裡面</font><br />SELECT empno, lastname FROM employee WHERE <strong>(empno, 'AD3113')</strong> IN <strong>(SELECT empno, projno FROM emp_act WHERE emptime &gt; 0.5)</strong> ORDER BY 1;</p>
<p><strong>LIKE</strong></p>
<p><font color="#000080">// 比對字串，_ 代表1個字元，% 代表0或多個字元</font><br />SELECT id, name FROM staff WHERE name LIKE <strong>'S%n'</strong> OR name LIKE <strong>'_a_a%'</strong> OR name LIKE<strong> '%r_%a'</strong> ORDER BY id;  </p>
<p><font color="#000080">// 可自訂 ESCAPE</font><br />SELECT id FROM staff WHERE id = 10 <br />AND 'ABC' LIKE 'AB%' <br />AND 'A%C' LIKE&nbsp; A/%C' <strong>ESCAPE '/'</strong> <br />AND 'A_C' LIKE 'A\_C' <strong>ESCAPE '\' <br /></strong>AND 'A_$' LIKE 'A$_$$' <strong>ESCAPE '$';</strong></p>
<p><font color="#000080">// 幾個 match 的範列</font><br />LIKE <strong>'AB%'</strong> Finds <strong>AB, any string<br /></strong>LIKE <strong>'AB%'</strong> ESCAPE '+' Finds<strong> AB, any string<br /></strong>LIKE <strong>'AB+%'</strong> ESCAPE '+' Finds <strong>AB%<br /></strong>LIKE <strong>'AB++'</strong> ESCAPE '+' Finds <strong>AB+<br /></strong>LIKE <strong>'AB+%%'</strong> ESCAPE '+' Finds <strong>AB%</strong>, any string<br />LIKE <strong>'AB++%'</strong> ESCAPE '+' Finds <strong>AB+</strong>, any string<br />LIKE <strong>'AB+++%'</strong> ESCAPE '+' Finds <strong>AB+%<br /></strong>LIKE <strong>'AB+++%%'</strong> ESCAPE '+' Finds <strong>AB+%</strong>, any string<br />LIKE <strong>'AB+%+%%'</strong> ESCAPE '+' Finds <strong>AB%%</strong>, any string<br />LIKE <strong>'AB++++'</strong> ESCAPE '+' Finds <strong>AB++<br /></strong>LIKE <strong>'AB+++++%'</strong> ESCAPE '+' Finds <strong>AB++%<br /></strong>LIKE <strong>'AB++++%'</strong> ESCAPE '+' Finds <strong>AB++</strong>, any string<br />LIKE <strong>'AB+%++%' </strong>ESCAPE '+' Finds <strong>AB%+</strong>, any string  </p>
<p><strong><font size="2">And vs OR</font></strong></p>
<p><font color="#000080">// AND 比 OR 先做，若有()裡面先做</font><br />SELECT * FROM table1 WHERE col1 = 'C'<strong> AND</strong> col1 &gt;= 'A' <strong>OR </strong>col2 &gt;= 'AA' ORDER BY col1;  </p>
<p>SELECT * FROM table1 WHERE col1 = 'C' <strong>AND</strong> <strong>(</strong>col1 &gt;= 'A' <strong>OR</strong> col2 &gt;= 'AA'<strong>) </strong>ORDER BY col1;  </p>
<p><strong>CAST</strong>  </p>
<p><font color="#000080">// CAST 型態轉換，若強制轉成 INTEGER 會無條件捨去小數點<br /></font>SELECT id ,salary ,<strong>CAST(salary AS INTEGER)</strong> AS sal2 FROM staff WHERE id &lt; 30 ORDER BY id;  </p>
<p><font color="#000080">// CHAR 的型態轉換，若長度太長會被切掉<br /></font>SELECT id ,job ,<font color="#000000"><strong>CAST(job AS CHAR(3))</strong></font> AS job2 FROM staff WHERE id &lt; 30 ORDER BY id;  </p>
<p><strong>VALUES</strong></p>
<p><font color="#000080">// 使用 VALUES 做出的<strong>暫時</strong>資料表</font><br />VALUES 6 &lt;= 1 row, 1 column<br />VALUES (6) &lt;= 1 row, 1 column<br />VALUES 6, 7, 8 &lt;= 3 row, 1 columns<br />VALUES (6), (7), (8) &lt;= 3 rows, 1 column<br />VALUES (6,66), (7,77), (8,NULL) &lt;= 3 rows, 2 columns</p>
<p><font color="#000080">// WITH...VALUES 可以做出暫存的 table，執行結束 table 就失效，ex.搜尋航班表　</font><br /><strong>WITH</strong> temp1 (col1, col2) AS<strong> (VALUES ( 0, 'AA') ,( 1, 'BB') ,( 2, NULL))</strong>SELECT * FROM temp1;  </p>
<p><font color="#000080">// temp2 的資料臨時由 temp1 得來</font><br />WITH <strong>temp1</strong> (col1, col2, col3) AS<br />(VALUES ( 0, 'AA', 0.00),( 1, 'BB', 1.11),( 2, 'CC', 2.22))<br />,<strong>temp2 </strong>(col1b, colx) AS<br />(SELECT col1 ,col1 + col3 FROM <strong>temp1</strong>)<br />SELECT * FROM <strong>temp2</strong>;  </p>
<p><strong>CASE</strong>  </p>
<p><font color="#000080">// 在執行過程中選擇改變指定欄位的值，有點像switch</font><br />SELECT Lastname ,sex AS sx<br />,<strong>CASE sex<br />&nbsp;&nbsp; WHEN 'F' THEN 'FEMALE' <br />&nbsp;&nbsp; WHEN 'M' THEN 'MALE'<br />&nbsp;&nbsp; ELSE NULL<br />END</strong> AS sexx<br />FROM employee WHERE lastname LIKE 'J%' ORDER BY 1;  </p>
<p><font color="#000080">// 也可以寫成如下</font><strong><font color="#000080"> sex = 'F'</font> <br /></strong>SELECT lastname ,sex AS sx<br />,<strong>CASE<br />&nbsp;&nbsp;&nbsp; WHEN sex = 'F' THEN 'FEMALE'<br />&nbsp;&nbsp;&nbsp; WHEN sex = 'M' THEN 'MALE' <br />&nbsp;&nbsp;&nbsp; ELSE NULL<br />END</strong> AS sexx<br />FROM employee WHERE lastname LIKE 'J%' ORDER BY 1;  </p>
<p><font color="#000080">// midinit 與 sex 比較，取大值</font><br />SELECT lastname ,midinit AS mi ,sex AS sx<br />,<strong>CASE<br />&nbsp;&nbsp;&nbsp; WHEN midinit &gt; sex&nbsp;&nbsp; THEN midinit<br />&nbsp;&nbsp;&nbsp; ELSE sex<br />END</strong> AS mx<br />FROM employee WHERE lastname LIKE 'J%' ORDER BY 1;  </p>
<p><font color="#000080">// 配合SUM()聰明地計算 Femail、Male 個數<br /></font>SELECT COUNT(*) AS tot<br />,<strong>SUM(CASE sex WHEN 'F' THEN 1 ELSE 0 END)</strong> AS #f<br />,<strong>SUM(CASE sex WHEN 'M' THEN 1 ELSE 0 END)</strong> AS #m<br />FROM employee WHERE lastname LIKE 'J%';  </p>
<p>ANSWER<br />=========<br />TOT #F #M<br />---&nbsp;&nbsp; --&nbsp; --<br />&nbsp; 3&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp; 2  </p>
<p><font color="#000080">// 轉換值過程中確保了 sex 不會是 NULL 值<br /></font>SELECT lastname ,sex FROM employee WHERE lastname LIKE 'J%' AND <strong>CASE sex<br />&nbsp;&nbsp;&nbsp; WHEN 'F' THEN ''<br />&nbsp;&nbsp;&nbsp; WHEN 'M' THEN ''<br />&nbsp;&nbsp;&nbsp; ELSE NULL<br />&nbsp;&nbsp;&nbsp; END</strong> IS NOT NULL ORDER BY 1;  </p>
<p><font color="#000080">// 巢狀結構，以部門 dept 與年資 years，決定 comm 值</font><br />UPDATE staff SET comm = </p>
<p><strong>CASE dept<br />&nbsp;&nbsp;&nbsp;&nbsp; WHEN 15 THEN comm * 1.1<br />&nbsp;&nbsp;&nbsp;&nbsp; WHEN 20 THEN comm * 1.2<br />&nbsp;&nbsp;&nbsp;&nbsp; WHEN 38 THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CASE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHEN years &lt; 5 THEN comm * 1.3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHEN years &gt;= 5 THEN comm * 1.4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE NULL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END<br />&nbsp;&nbsp;&nbsp;&nbsp; ELSE comm<br />END<br /></strong>WHERE comm IS NOT NULL<br />AND dept &lt; 50;</p>
<p><font color="#000080">// 避免NULL值變成被除數而造成錯誤</font><br />WITH temp1 (c1,c2) AS (VALUES (88,9),(44,3),(22,0),(0,1))<br />SELECT c1 ,c2,<br /><strong>CASE c2 <br />&nbsp;&nbsp;&nbsp; WHEN 0 THEN NULL<br />&nbsp;&nbsp;&nbsp; ELSE c1/c2<br />END</strong> AS c3<br />FROM temp1;</p>
<p><strong>DML Statements -----------</strong></p>
<p><strong>INSERT</strong></p>
<p><font color="#000080">// 插入一筆資料<br /></font><strong>INSERT INTO</strong> emp_act <strong>VALUES </strong>('100000' ,'ABC' ,10 ,1.4 ,'2003-10-22', 2003-11-24');</p>
<p><font color="#000080">// 一次插入多筆資料，其中只要一筆失敗就全部失敗失效</font><br /><strong>INSERT INTO</strong> emp_act <strong>VALUES<br /></strong>('200000' ,'ABC' ,10 ,1.4 ,'2003-10-22', '2003-11-24')<br />,('200000' ,'DEF' ,10 ,1.4 ,'2003-10-22', '2003-11-24')<br />,('200000' ,'IJK' ,10 ,1.4 ,'2003-10-22', '2003-11-24');  </p>
<p><font color="#000080">// NULL and DEFAULT 是關鍵字，DEFAULT 值在 CREATE table 時設定</font><br /><strong>INSERT INTO</strong> emp_act<strong> VALUES<br /></strong>('400000' ,'ABC' ,10 ,<strong>NULL</strong> ,<strong>DEFAULT</strong>, CURRENT DATE)  </p>
<p><font color="#000080">// 可以選擇性地只給4個欄位值<br /></font><strong>INSERT INTO</strong> emp_act <strong>(projno, emendate, actno, empno)</strong> VALUES<br /><strong>('ABC' ,DATE(CURRENT TIMESTAMP) ,123 ,'500000')</strong>;  </p>
<p><font color="#000080">// INSERT 的資料是從另外一個 table select 出來的</font><br />INSERT INTO emp_act<br /><strong>SELECT LTRIM(CHAR(id + 600000)) ,SUBSTR(UCASE(name),1,6) ,salary / 229 ,123 ,CURRENT DATE ,'2003-11-11' FROM staff WHERE id &lt; 50</strong>;  </p>
<p><strong>UPDATE</strong>  </p>
<p><font color="#000080">// UPDATE <em>table</em> SET 給值</font><br /><strong>UPDATE</strong> emp_act<br /><strong>SET</strong> emptime = NULL<br />&nbsp;&nbsp;&nbsp;&nbsp; ,emendate = DEFAULT<br />&nbsp;&nbsp;&nbsp;&nbsp; ,emstdate = CURRENT DATE + 2 DAYS<br />&nbsp;&nbsp;&nbsp;&nbsp; ,actno = ACTNO / 2<br />&nbsp;&nbsp;&nbsp;&nbsp; ,projno = 'ABC'<br />WHERE empno = '100000';  </p>
<p><font color="#000080">// SET 給的值是用 select 出來的值</font><br /><strong>UPDATE</strong> emp_act<br /><strong>SET</strong> actno = <strong>(SELECT MAX(salary) FROM staff)<br /></strong>WHERE empno = '200000';  </p>
<p><strong>DELETE</strong>  </p>
<p><font color="#000080">// DELECT FROM 刪除某一筆資料，指定明確要刪哪一筆資料</font><br /><strong>ELETE FROM</strong> emp_act <strong>WHERE </strong>empno = '000010' AND projno = 'MA2100'&nbsp; AND actno = 10;  </p>
<p><font color="#000080">// 指定不明確條件，會全刪除<br /></font><strong>DELETE FROM</strong> emp_act;  </p>
<p><font color="#000080">// 配合另外一個 table 來決定刪不刪<br /></font><strong>DELETE FROM</strong> staff s1<br />WHERE id NOT IN<strong> (SELECT MAX(id) FROM staff s2 WHERE s1.dept =&nbsp; 2.dept);</strong></p>
<p><font color="#000080">// <strong>OLD TABLE</strong> 看還沒INSERT之前的table<br /><strong>NEW TABLE</strong> 看INSERT之後的table<br /><strong>FINAL TABLE</strong> 看INSERT完，同時triggers也做完後的table</font><br /><strong>SELECT</strong> empno ,projno AS prj ,actno AS act<br />FROM <font color="#000000"><strong>FINAL TABLE</strong><br /></font><strong>(INSERT INTO emp_act<br />VALUES ('200000','ABC',10 ,1,'2003-10-22','2003-11-24')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,('200000','DEF',10 ,1,'2003-10-22','2003-11-24'))<br /></strong>ORDER BY 1,2,3;</p>
<p><font color="#000080">// 定義 procedure，escape 是 @<br /></font>create procedure proc()<br />begin<br />.<br />.<br />.<br />end<br />@</p>
<p><font color="#000080">// in 的var_id是傳入的參數，out 的 name 是return的值</font><br />db2 create procedure proc(<strong>in</strong> var_id int, <strong>out</strong> name char(10));</p>
<p><font color="#000080">// 續上，CALL procdure 語法</font><br />db2 call proc(20,?);</p>
<p><strong>DECLARE Variables</strong></p>
<p><font color="#000080">// DECLARE 變數宣告</font><br /><strong>BEGIN ATOMIC<br /></strong>&nbsp;&nbsp; <strong>DECLARE aaa, bbb, ccc SMALLINT DEFAULT 1;<br /></strong>&nbsp;&nbsp; DECLARE ddd CHAR(10) DEFAULT NULL;<br />&nbsp;&nbsp; DECLARE eee INTEGER;<br />&nbsp;&nbsp; SET eee = aaa + 1;<br />&nbsp;&nbsp; UPDATE staff<br />&nbsp;&nbsp; SET comm = aaa<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,salary = bbb<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,years = eee<br />&nbsp;&nbsp; WHERE id = 10;<br /><strong>END</strong></p>
<p><strong>GET DIAGNOSTICS </strong></p>
<p><font color="#000080">// GET 處理了多少算資料</font><br />BEGIN ATOMIC<br />&nbsp;&nbsp; DECLARE numrows INT DEFAULT 0;<br />&nbsp;&nbsp; UPDATE staff<br />&nbsp;&nbsp; SET salary = 12345<br />&nbsp;&nbsp; WHERE id &lt; 100;<br />&nbsp;&nbsp; <strong>GET DIAGNOSTICS numrows = ROW_COUNT; <font color="#000080">//要接著上面動作完執行<br /></font></strong>&nbsp;&nbsp; UPDATE staff<br />&nbsp;&nbsp; SET salary = numrows<br />&nbsp;&nbsp; WHERE id = 10;<br />END</p>
<p><strong>IF STATEMENT</strong><br />BEGIN ATOMIC<br />&nbsp;&nbsp; DECLARE cur INT;<br />&nbsp;&nbsp; SET cur = MICROSECOND(CURRENT TIMESTAMP);<br />&nbsp;&nbsp; IF cur &gt; 600000 THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE staff<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET name = CHAR(cur)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE id = 10;<br />&nbsp;&nbsp; ELSEIF cur &gt; 300000 THEN<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE staff<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET name = CHAR(cur)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE id = 20;<br />&nbsp;&nbsp; ELSE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE staff<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET name = CHAR(cur)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE id = 30;<br />&nbsp;&nbsp; END IF;<br />END </p>
<p><strong>AVG Function</strong></p>
<p><font size="2"></font>
<p><font color="#000080">// 自動忽略計算 NULL</font><br />SELECT AVG(dept) AS a1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG(ALL dept) AS a2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG(DISTINCT dept) AS a3<font color="#000080"> // 重覆的只取一筆<br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG(dept/10) AS a4<font color="#000080"> // 較不精確，因int除法會法除小數點<br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG(dept)/10 AS a5<br />FROM staff<br />HAVING AVG(dept) &gt; 40; </p>
<p><font color="#000080">// 若 comm 為 0 的話就變成NULL，也就是不加入平均計算</font><br />SELECT AVG(salary) AS salary<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG(comm) AS comm1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,AVG<strong>(CASE comm<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHEN 0 THEN NULL<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE comm<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END)</strong> AS comm2<br />FROM staff; </p>
<p><strong>COUNT Function</strong></p>
<p><font color="#000080">// 計算筆數，NULL 不算<br /></font>SELECT COUNT(*) AS c1<br />&nbsp;&nbsp; ,COUNT(INT(comm/10)) AS c2<br />&nbsp;&nbsp; ,COUNT(ALL INT(comm/10)) AS c3<br />&nbsp;&nbsp; ,COUNT(DISTINCT INT(comm/10)) AS c4<br />&nbsp;&nbsp; ,COUNT(DISTINCT INT(comm)) AS c5<br />&nbsp;&nbsp; ,COUNT(DISTINCT INT(comm))/10 AS c6<br />FROM staff;</p>
<p>ANSWER<br />=================<br />C1 C2 C3 C4 C5 C6<br />-- -- -- -- -- --<br />35 24 24 19 24 2 </p>
<p><strong>MAX Function</strong> </p>
<p><font color="#000080">// 取最大值，先 CHAR(id) 轉成 char 再排序<br /></font>SELECT MAX(id) AS id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MAX(CHAR(id)) AS chr<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MAX(DIGITS(id)) AS dig<br />FROM staff; </p>
<p><font color="#000080">// 取最小值<br /></font>SELECT MIN(dept)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MIN(ALL dept)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MIN(DISTINCT dept)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,MIN(DISTINCT dept/10)<br />FROM staff; </p>
<p><font color="#000080">// 加總<br /></font>SELECT SUM(dept) AS s1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(ALL dept) AS s2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(DISTINCT dept) AS s3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(dept/10) AS s4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,SUM(dept)/10 AS s5<br />FROM staff; </p>
<p><font color="#000080">// RANK() 重覆資料有gap的排序，DENSE_RANK() 重覆資料無gap的排序，ROW_NUMBER() 依照前後排序</font><br />SELECT id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,years<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,salary<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>RANK()</strong> <strong>OVER(ORDER BY years)</strong> AS rank#<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>DENSE_RANK()</strong> <strong>OVER(ORDER BY years)</strong> AS dense#<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>ROW_NUMBER()</strong> <strong>OVER(ORDER BY years)</strong> AS row#<br />FROM staff<br />WHERE id &lt; 100<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND years IS NOT NULL<br />ORDER BY years; </p>
<p>ANSWER<br />===================================<br />ID YEARS SALARY RANK# DENSE# ROW#<br />-- ----- -------- ----- ------ ----<br />30 5 17506.75 1 1 1<br />40 6 18006.00 2 2 2<br />90 6 18001.75 2 2 3<br />10 7 18357.50 4 3 4<br />70 7 16502.83 4 3 5<br />20 8 18171.25 6 4 6<br />50 10 20659.80 7 5 7</p>
<p><font color="#000080">// 多次排序<br /></font>SMALLINT(RANK() OVER(<font color="#000080">ORDER BY job ASC ,years ASC ,id ASC</font>)) AS asc3</p>
<p><font color="#000080">// 決定 NULL 排在前或排在後</font><br />,DENSE_RANK() OVER(ORDER BY years ASC NULLS FIRST) AS AF<br />,DENSE_RANK() OVER(ORDER BY years ASC NULLS LAST ) AS AL </p>
<p><strong>Partition Usage</strong> </p>
<p><font color="#000080">// PARTITION，GROUP 化<br /></font>SELECT id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,years AS YR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,salary<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,RANK() OVER(<strong>PARTITION BY years ORDER BY salary</strong>) AS r1<br />FROM staff<br />WHERE id &lt; 80 AND years IS NOT NULL<br />ORDER BY years ,salary; </p>
<p>ANSWER<br />=================<br />ID YR SALARY R1<br />-- -- -------- --<br />30 5 17506.75 1<br />40 6 18006.00 1<br />70 7 16502.83 1<br />10 7 18357.50 2<br />20 8 18171.25 1<br />50 0 20659.80 1 </p>
<p><font color="#000080">// 取得部門中薪資最高者</font><br />SELECT id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,salary<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,dept AS dp<br />FROM (SELECT S1.*<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,RANK() OVER(<strong>PARTITION BY dept<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ORDER BY salary DESC</strong>) AS <strong>r1<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM staff s1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE id &lt; 80 AND years IS NOT NULL)AS xxx<br />WHERE <strong>r1 = 1</strong> ORDER BY dp; </p>
<p><font color="#000080">// 配合 BETWEEN 可以找出 3~6 筆資料<br /></font>SELECT * FROM (SELECT id ,name ,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>ROW_NUMBER() OVER(ORDER BY id) AS r</strong> <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM staff WHERE id &lt; 200 AND years IS NOT NULL)AS xxx WHERE<strong> r BETWEEN 3 AND 6<br /></strong> ORDER BY id; </p>
<p><font color="#000080">// 每5筆列出來<br /></font>SELECT * FROM (SELECT id ,name <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,ROW_NUMBER() OVER(ORDER BY id) AS r <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM staff WHERE id &lt; 200 AND years IS NOT NULL )AS xxx WHERE <strong>(r - 1) = ((r - 1) / 5) * 5</strong> ORDER BY id; </p>
<p><font color="#000080">// 要有 OVER() 才能把 rows 列出SUM(),AVG(),MAX(),MIX()...</font><br />SELECT id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,salary<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>SUM(salary) OVER()</strong> AS sum_sal<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>AVG(salary) OVER()</strong> AS avg_sal<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>MIN(salary) OVER()</strong> AS min_sal<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>MAX(salary) OVER()</strong> AS max_sal<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>COUNT(*) OVER()</strong> AS #rows<br />FROM staff<br />WHERE id &lt; 60<br />ORDER BY id;<img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="116" alt="18" src="http://smallken.no-ip.org/blog/wp-content/uploads/2007/12/18.png" width="457" border="0"/>  </p>
<p><strong>COALESCE Function</strong> </p>
<p><font color="#000080">// 如果 comm 是 NULL 的話會轉成 0</font><br />SELECT id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,comm<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>COALESCE(comm,0)</strong><br />FROM staff<br />WHERE id &lt; 30<br />ORDER BY id; </p>
<p><strong>CONCAT Function</strong> </p>
<p><font color="#000080">// 兩字串併在一起，下面三種結果都一樣 <br />• "AB" || "CD" <br />• "AB" CONCAT "CD"<br />• CONCAT("AB","CD")</font><br />SELECT <strong>'A' || 'B'<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong> ,'A' CONCAT 'B'<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>,CONCAT('A','B')<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>,'A' || 'B' || 'C'<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>,CONCAT(CONCAT('A','B'),'C')<br /></strong>FROM staff<br />WHERE id = 10; </p>
<p><strong>DECIMAL Function</strong> </p>
<p><font color="#000080">// DECIMAL 是有小數點的資料型態<br /></font>WITH temp1(n1,n2,c1,c2) AS<br />(VALUES (123<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,1E2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,'123.4'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>'567$8'</strong>))<br />SELECT <strong>DEC(n1,3)</strong> AS dec1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>DEC(n2,4,1)</strong> AS dec2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>DEC(c1,4,1)</strong> AS dec3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<strong>DEC(c2,4,1,'$')</strong> AS dec4 <font color="#000080">// 指定小數點為 $<br /> </font>FROM temp1; </p>
<p>ANSWER<br />==========================<br />DEC1 DEC2 DEC3 DEC4<br />----- ------ ------ ------<br />123. 100.0 123.4 567.8 </p>
<p><strong>GENERATE_UNIQUE Function</strong> </p>
<p><font color="#000080">// 產生唯一值，與時間有關<br /></font>SELECT id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,<font color="#000080">GENERATE_UNIQUE() AS unique_val#1<br /></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,DEC(HEX(GENERATE_UNIQUE()),26) AS unique_val#2<br />FROM staff<br />WHERE id &lt; 50<br />ORDER BY id; </p>
<p>ANSWER<br />================= ===========================<br />ID UNIQUE_VAL#1 UNIQUE_VAL#2<br />-- -------------- ---------------------------<br />10 20000901131648990521000000.<br />20 20000901131648990615000000.<br />30 20000901131648990642000000.<br />40 20000901131648990669000000. </p>
<p><strong>RAND Function</strong></p>
<p><font color="#000080">// RAND() 得到 0~1 之間的亂數，以下列子表示取 table 1/10 的資料<br /></font>SELECT id<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ,name<br />FROM staff<br />WHERE <strong>RAND() &lt; 0.1</strong><br />ORDER BY id;</p>
]]></content:encoded>
			<wfw:commentRss>http://smallken.no-ip.org/blog/2007/12/30/uncategorized/438.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
