在Google大神及網路上各先拜的幫助下,新學會以下兩個MS-SQL內建的預存程序:
查詢資料庫所有table的筆數:
EXEC sp_MsForEachTable 'SELECT ''?'', COUNT(*) FROM ?'
查詢資料庫所有table的大小:
EXEC sp_MsForEachTable "Sp_SpaceUsed '?'"
p.s.以上的那些問號,系統在執行時會辨別成當下所使用的資料庫名稱
2011-03-31
2011-03-30
MS-SQL:將資料分組並比較資料大小
通常,我們將資料分組並且比較大小(如圖一整理成圖二),可以結合ORDER BY、GROUP BY,一個語法簡單搞定。如下所示:
《圖一.資料原始檔》
原始資料如下:
select title,val,note from data_compare
分組並按大→小排列:
SELECT title,val,note FROM data_compare
ORDER BY title, val desc
《圖二.整理後資料》
但如果是需要用其它文字代替比較出來的結果(如圖三所示),那可能有點麻煩…
《圖三.用其它文字代替比較出來的結果》
使用cursor一筆一筆處理解決似乎是不錯的辦法,但考慮到日後資料量變得龐大及其轉檔效能,這就變成最後的手段了。
在此提供另一種方式:
構想:
1.先將各組最大值及最小值分別取出放入暫存table#A、#B
2.排除最大值及最小值取出剩餘資料,即為中間值
3.將要替代的文字一一放入最大值、最小值、中間值資料表,UNION ALL,完成!
程式碼如下:
SELECT distinct title, maxval=MAX(val)
into #A
FROM data_compare
GROUP BY title
SELECT distinct title, minval=MIN(val)
into #B
FROM data_compare
GROUP BY title
SELECT distinct data_compare.title, '棒' as val, data_compare.note
FROM data_compare
JOIN #A ON data_compare.title=#A.title
JOIN #B ON data_compare.title=#B.title
WHERE data_compare.val=#A.maxval and data_compare.title=#A.title
UNION ALL
SELECT distinct data_compare.title, '不錯' as val, data_compare.note
FROM data_compare
JOIN #A ON data_compare.title=#A.title
JOIN #B ON data_compare.title=#B.title
WHERE (data_compare.val<>#A.maxval and data_compare.title=#A.title) and (data_compare.val<>#B.minval and data_compare.title=#B.title)
UNION ALL
SELECT distinct data_compare.title, '加油' as val, data_compare.note
FROM data_compare
JOIN #A ON data_compare.title=#A.title
JOIN #B ON data_compare.title=#B.title
WHERE data_compare.val=#B.minval and data_compare.title=#B.title
《圖一.資料原始檔》
原始資料如下:
select title,val,note from data_compare
分組並按大→小排列:
SELECT title,val,note FROM data_compare
ORDER BY title, val desc
《圖二.整理後資料》
但如果是需要用其它文字代替比較出來的結果(如圖三所示),那可能有點麻煩…
《圖三.用其它文字代替比較出來的結果》
使用cursor一筆一筆處理解決似乎是不錯的辦法,但考慮到日後資料量變得龐大及其轉檔效能,這就變成最後的手段了。
在此提供另一種方式:
構想:
1.先將各組最大值及最小值分別取出放入暫存table#A、#B
2.排除最大值及最小值取出剩餘資料,即為中間值
3.將要替代的文字一一放入最大值、最小值、中間值資料表,UNION ALL,完成!
程式碼如下:
SELECT distinct title, maxval=MAX(val)
into #A
FROM data_compare
GROUP BY title
SELECT distinct title, minval=MIN(val)
into #B
FROM data_compare
GROUP BY title
SELECT distinct data_compare.title, '棒' as val, data_compare.note
FROM data_compare
JOIN #A ON data_compare.title=#A.title
JOIN #B ON data_compare.title=#B.title
WHERE data_compare.val=#A.maxval and data_compare.title=#A.title
UNION ALL
SELECT distinct data_compare.title, '不錯' as val, data_compare.note
FROM data_compare
JOIN #A ON data_compare.title=#A.title
JOIN #B ON data_compare.title=#B.title
WHERE (data_compare.val<>#A.maxval and data_compare.title=#A.title) and (data_compare.val<>#B.minval and data_compare.title=#B.title)
UNION ALL
SELECT distinct data_compare.title, '加油' as val, data_compare.note
FROM data_compare
JOIN #A ON data_compare.title=#A.title
JOIN #B ON data_compare.title=#B.title
WHERE data_compare.val=#B.minval and data_compare.title=#B.title
2011-03-20
JAVA 關於遞增/遞減 運算子的前置與後置
前置:++a ;
後置:a++ ;
就變數運算結果看來,a++與++a,所得到的值完全相同,那麼,為什麼要分這兩種呢?
因為在程式執行,產生的結果並不相同;
舉例:宣告兩個整數變數a和b,並初始化,如下所示:
int a=1 ;
int b=1 ;
接下來,我們在程式運算時,分成兩種情況:
1.若指定:
b = a++ ;
再讓系統分別顯示變數 a、b的值,得到的結果如下:
a = 2;b = 1。
即運算中,由於變數 b 在“=“的右方會先碰到變數a,所以此時的 “=” 會系統解讀成「指
向」的作用,所以變數 b被指向成了變數 a(此時變數a還沒做任何運算),所以:
b = a = 1;
而後,變數 a再行遞增運算:a = a+1 = 2。
2.若是我們指定:
b= ++a ;
再讓系統分別顯示變數 a、b的值,得到的結果如下:
a = 2;b = 2。
即運算中,由於變數 b 在“=“的右方會先碰到遞增運算式「++」,所以此時的 “=” 會系統
解讀成「運算」,所以:
b = a+1 = 2。
後置:a++ ;
就變數運算結果看來,a++與++a,所得到的值完全相同,那麼,為什麼要分這兩種呢?
因為在程式執行,產生的結果並不相同;
舉例:宣告兩個整數變數a和b,並初始化,如下所示:
int a=1 ;
int b=1 ;
接下來,我們在程式運算時,分成兩種情況:
1.若指定:
b = a++ ;
再讓系統分別顯示變數 a、b的值,得到的結果如下:
a = 2;b = 1。
即運算中,由於變數 b 在“=“的右方會先碰到變數a,所以此時的 “=” 會系統解讀成「指
向」的作用,所以變數 b被指向成了變數 a(此時變數a還沒做任何運算),所以:
b = a = 1;
而後,變數 a再行遞增運算:a = a+1 = 2。
2.若是我們指定:
b= ++a ;
再讓系統分別顯示變數 a、b的值,得到的結果如下:
a = 2;b = 2。
即運算中,由於變數 b 在“=“的右方會先碰到遞增運算式「++」,所以此時的 “=” 會系統
解讀成「運算」,所以:
b = a+1 = 2。
2011-03-08
JAVA 變數設定
變數宣告
- 語法
資料型態 變數名稱- //方式1 先定義型態,再定義初始值
int x;
x = 100
//方式2 宣告同時初始化變數
int y = 200;
- //方式1 先定義型態,再定義初始值
- 命名規則
- 1.英文 or $ 開頭
2.不得為java關鍵字
3.字母大小寫有別
4.可 [英文] + [數字] + [ _ ] 來命名;ex:String car_1;
- 1.英文 or $ 開頭
訂閱:
文章 (Atom)