機房收費系統中遇到的SQL語句問題

來源:互聯網
上載者:User

標籤:style   使用   os   strong   資料   2014   ar   問題   

個人版機房收費系統進行中中,遇到了幾個有關SQL語句的問題。

1.sum函數的使用:

在結賬部分,要求出某個表中某一列的和。在第一次機房系統中,我不知道sum函數的存在,很傻很天真地用迴圈一個一個往上加。下面以求所有卡中餘額的和來說說sum函數怎麼使,SQL語句為:select sum(cash)from T_Card。這個格式不是固定的,可以根據需求更改,比如求多列的和:select sum(列名1),sum(列名2)...from [表名] where...。查詢出來的結果只有一行,如果只查一列的和,就是一行一列,那個和在DataTable.Rows(0).Item(0)中。

2.coalesce函數的使用:

上面的sum函數輕輕鬆鬆地解決了求和的問題,隨之又出現一個問題。比如說查詢當天的充值金額一列的和,但當天沒有充值記錄,這時就返回一個“NULL”,在代碼中如何處理呢?幾經周折,找到了coalesce函數。當查詢不到合格結果時,我們讓它返回"0",在SQL語句中這樣來寫:SELECTCOALESCE(SUM(cash),0) FROM T_Card WHERE ...

3. convert日期轉換:

當初建表的時候,為了省事兒日期和時間沒有分開,使用datetime資料類型,這樣輸入的時候日期和時間連在一起了。在結賬的時候麻煩出來了,比如我要查詢“2014-8-7”的充值記錄,但我的表中時間都是“2014-8-7 hh:mm:ss”格式的。在我絕望地以為要改表的時候,輸了一長串表達不清的句子給百度,居然找到瞭解決辦法,利用convert日期轉換。

convert的文法是:convert(類型,運算式/欄位,樣式),其中樣式限於DateTime類型,"120"表示”2014-8-7 20:50:31“這種格式。具體的SQL語句這樣寫:

select coalesce (sum(addCash),0) from T_Recharge where (CONVERT(varchar(10), time, 120) = CONVERT(varchar(10), GETDATE(), 120)),表示從充值表中得到當天充值金額的總和。


小結:雖然在一年前就學過SQL語句,在兩個系統中多次用到,而且在自考中這部分也佔有一定的份量,但來來回回就會寫最基本的那幾句。通過以上遇到的幾個問題,讓我覺得知識真是學無止境,同時也體會到米老師那句“不怕不知道,就怕不知道”的含義。面對海量的知識,我們不可能啥都精通,但要知道它的存在。遇到問題,能夠藉助現代網路資源即時解決,從而高效學習,不斷培養自己的學習能力。



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.