初识Mysql(part8)--我需要知道的5个关于计算字段的小知识
學習筆記,以代碼和例子堆砌而成,方便查閱。
參考書籍:《Mysql必知必會》等
要點:Concat()函數、Trim()函數、AS關鍵字、數值計算、測試計算
此Blog里的例子都會用下面shop數據表:
# id, product, price, pro_number, note, something '1', 'Apple', '3', '30', 'sweet', ' OK ' '2', 'Chocolates', '6', '15', 'nice', 'SURE ' '3', 'Hamburger', '10', '5', 'yummy', 'FINE ' '4', 'Pen', '50', '1', 'fluent', ' NOW' '5', 'Book', '45', '2', 'excellent', 'WHAT'如果我們想要直接從數據庫中檢索出檢索出轉換、計算或格式化過的數據;而不是檢索出數據,然后在客戶機的應用程序或報告程序中重新格式化,那么我們就要了解一下計算字段了。計算字段并不像數據表中的列一樣,實際存在于數據庫表中,它是在運行時,在SELECT語句內創建的。
- 拼接Concat()
將shop表中的product和note列以product(note)的形式拼接起來,再按照price升序排列.
SELECT Concat(product, '(', note, ')') FROM shop ORDER BY price;輸出:
# Concat(product, '(', note, ')') 'Apple(sweet)' 'Chocolates(nice)' 'Hamburger(yummy)' 'Book(excellent)' 'Pen(fluent)'- 刪除數據兩邊多余空格Trim()
首先,我們將note和something列,按照note[something]的形式拼接在一起:
SELECT Concat(note, '(', something, ')') FROM shop;輸出:
# Concat(note, '(', something, ')') 'sweet( OK )' 'nice(SURE )' 'yummy(FINE )' 'fluent( NOW)' 'excellent(WHAT)'我們看到由于something列中有些值的左/右邊有多余空格的存在,導致拼接結果并不理想,所以,我想要刪除something左右兩端空格,再與note拼接,這時,我們就要用函數Trim(),它可以幫助我們去除字符串兩邊的空格:
SELECT Concat(note, '(', Trim(something), ')') FROM shop;輸出:
# Concat(note, '(', Trim(something), ')') 'sweet(OK)' 'nice(SURE)' 'yummy(FINE)' 'fluent(NOW)' 'excellent(WHAT)'除了Trim()函數之外,還有RTrim()和LTrim()函數,它們分別可以去掉字符串右邊和左邊的空格。
- 使用別名AS
當我們使用拼接函數Concat()將兩列拼接在一起后,請問這個拼接好的列叫啥呢?實際上它并沒有名字,它只是一個值。沒有名字,客戶機就不能應用。為了讓這個列有名字,我們用關鍵字AS,告訴SQL創建一個包含指定計算的名為###的計算字段,這個###就是我們要給計算字段(也就是拼接函數拼成的列)起的別名。
SELECT Concat(product, '(', note, ')') AS info FROM shop;輸出:
# info 'Apple(sweet)' 'Chocolates(nice)' 'Hamburger(yummy)' 'Pen(fluent)' 'Book(excellent)'我們看一下起名以后的數據表:
# id, product, price, pro_number, note, something '1', 'Apple', '3', '30', 'sweet', ' OK ' '2', 'Chocolates', '6', '15', 'nice', 'SURE ' '3', 'Hamburger', '10', '5', 'yummy', 'FINE ' '4', 'Pen', '50', '1', 'fluent', ' NOW' '5', 'Book', '45', '2', 'excellent', 'WHAT'其實這里我沒太搞懂,咋的,起個名字就能被客戶機應用了??起了名字以后,你還是計算字段啊(可能?),數據庫表中不是還沒你么,那你起名字,咋被客戶機應用???
好吧,這個問題先記著,以后解決
- 數值計算
好了,現在我想算每個product的總價了,總價(total=price*pro_number):
SELECT product,price*pro_number AS totla FROM shop;輸出:
# product, totla 'Apple', '90' 'Chocolates', '90' 'Hamburger', '50' 'Pen', '50' 'Book', '90'- 測試計算
SELECT提供了測試和試驗函數與計算的一個方法,我們可以省略FROM子句簡單的訪問和處理表達式。
來個例子:
SELECT 50-25;輸出:
# 50-25 '25'再來個例子:
SELECT Trim(' utf-8 ');輸出:
# Trim(' utf-8 ') 'utf-8'總結
以上是生活随笔為你收集整理的初识Mysql(part8)--我需要知道的5个关于计算字段的小知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 初识Mysql(part7)--我需要知
- 下一篇: 小班两个娃娃教案一等奖反思