程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換

Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換

編輯:關於MYSQL數據庫

  2.4 表達式求值和類型轉換

  MySQL允許編寫包括常量、函數調用和表列引用的表達式。這些值可利用不同類型的運算符進行組合,諸如算術運算符或比較運算符。表達式的項可用圓括號來分組。表達式在SELECT 語句的列選擇列表和WHERE 子句中出現得最為頻繁,如下所示:

  

  所選擇的每列給出了一個表達式,如WHERE 子句中所示的那樣。表達式也出現在DELETE 和UPDATE語句的WHERE 子句中,以及出現在INSERT 語句的VALUES( ) 子句中。

  在MySQL遇到一個表達式時,它對其求值得出結果。例如, (4 * 3)/(4 - 2) 求值得6。表達式求值可能涉及類型轉換。例如, MySQL在數960821用於需要日期值的環境時,將其轉換為日期“ 19 9 6 - 0 8 - 2 1”。本節討論怎樣編寫MySQL的表達式,以及在表達式求值中MySQL所使用的類型轉換規則。每個MySQL的運算符都介紹過了,但MySQL有那麼多的函數,我們只接觸過幾個。每個運算符和函數的進一步介紹可參閱附錄C。

  2.4.1撰寫表達式

  表達式可以只是一個簡單的常量,如:

  0 數值常量

  “a b c” 串常量

  表達式可以進行函數調用。有的函數需要參數(圓括號中有值),而有的不需要。多個參數應該用逗號分隔。在調用一個函數時,參數旁邊可以有空格,但在函數名與圓括號間不能有空格。下面是一些函數例子:

  NOW( ) 無參數函數

  STRCMP (“a b c”, “d e f”) 有兩個參數的函數

  STRCMP( “a b c”, “d e f”) 參數旁邊有空格是合法的

  STRCMP (“a b c”, “d e f”) 函數名後跟空格是不合法的

  如果函數名後有一個空格, MySQL的分析程序可能會將函數名解釋為一個列名(函數名不是保留字,如果需要的話,可將它們用作列名)。其結果是出現一個語法錯誤。表達式中可使用表列。最簡單的情形是,當某個列所屬的表在上下文中是明確的,則可簡單地給出列名對該列進行引用。下面的每個SELECT 語句中惟一地出了一個表名,因此,列的引用無歧義:

  

  如果使用哪個表的列不明確,可在列名前加上表名。如果使用哪個數據庫中的表也不明確的話,可在表名前加上數據庫名。如果只是希望意思更明顯,也可以在無歧義的上下文中利用這種更為具體的表示形式,如:

  

  總之,可以組合所有這些值以得到更為復雜的表達式。

  1. 運算符的類型

  MySQL有幾種類型的運算符,可用來連接表達式的項。算術運算符,如表2-15 所示,一般包括加、減、乘、除以及模運算符。在兩個操作數都是整數時,“+”、“-”和“ *”算術運算用BIGINT(64 位)整數值來完成。而在結果預期為一個整數時,“/”和“%”也是用BIGINT(64 位)整數值來完成的。應該認識到,如果某個運算涉及更大的值,如結果超過64 位,其結果不可預料。

  

  邏輯運算符如表2 - 16所示,對表達式進行估計以確定其為真(非零)或假(零)。MySQL包含有C 風格的“& &”、“| |”和“!”運算符,可替換A N D、OR 和N O T。要特別注意“| |”運算符,ANSI SQL 指定“| |”作為串連接符,但在MySQL中,它表示一個邏輯或運算。如果執行下面的查詢,則返回數0:

  

  MySQL為進行運算,將“ a b c”和“d e f”轉換為整數,且兩者都轉換為0, 0與0進行或運算,結果為0。在MySQL中,必須用CONCAT (“a b c”, “d e f”) 來完成串的連接。

  

  位運算符如表2-17 所示,完成按位“與”和“或”,其中結果的每一位按兩個操作數的對應位的邏輯AND 或OR 求值。還可以進行位的左移或右移。位運算用BIGINT(64 位)整數值進行。

  • 首頁
  • 上一頁
  • 1
  • 2
  • 3
  • 下一頁
  • 尾頁
  • 共3頁
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved