MySQL資料處理函數,mysql資料處理
資料處理函數有時從資料庫表中擷取到的資料需要進行一些處理。如將小寫字母替換為相應的大寫字母。這個處理過程可以在客戶機上進行,也可以在資料庫上進行。資料庫上進行會更高效。資料庫中有相應的資料處理函數來處理這些資料,但是在SQL中使用特殊的資料處理函數會降低其可移植性。不同的DBMS系統,其資料處理函數不同。
大多數的SQL支援以下類型的函數
- 用於處理文本串的函數,如刪除、填充值、轉換大小寫;
- 用於在數值資料上進行算術操作的函數;
- 用於處理日期和時間值並從這些值中提取特殊成分,如兩個日期只差的函數;
- 返回DBMS正在使用的特殊資訊的系統函數,如返回使用者登入,檢查版本;
文本處理函數
例子:將某一列字元轉換為大寫字元
常用文本處理函數
函數 |
說明 |
Left() |
返回串左邊的字元 |
Length() |
返回串的長度 |
Locate() |
找出串的一個子串 |
Lower() |
將串轉換為小寫 |
LTrim() |
去掉串左邊的空格 |
Right() |
返回串右邊的字元 |
RTrim() |
去掉串右邊的空格 |
Soundex() |
返回串的SOUNDEX值 |
SubString() |
返回子串的字元 |
Upper() |
將串轉換為大寫 |
Soundex()函數,找出發音類似的串,如由於拼字錯誤,在表中記錄了發音相似的名字,這時如果使用LIKE或者其他的匹配搜尋並不高效。使用SoundEX()會方便很多。
如下例子,真是名字為 Y.Lee,但是表中存放的名字為Y.Lie,如果使用匹配搜尋會發現搜尋不到,這時可以使用SoundEX()函數:
日期和時間處理函數常用日期和時間處理函數
函數 |
說明 |
AddDate() |
增加一個日期(天、周) |
AddTime() |
增加一個時間(時,分) |
CurDate() |
返回當前日期 |
CurTime() |
返回目前時間 |
Date() |
返回日期時間的日期部分 |
DateDiff() |
計算兩個日期之差 |
Date_Add() |
高度靈活的日期計算函數 |
Date_Format |
返回一個格式化的日期或字串 |
Day() |
返回一個日期的天數部分 |
DayOfWeek() |
對於一個日期返回對應的星期幾 |
Hour() |
返回一個時間的小時部分 |
Minute() |
返回一個時間的分鐘部分 |
Month() |
返回一個時間的月份部分 |
Now() |
返回當前日期 |
Second() |
返回一個時間的秒部分 |
Time() |
返回一個日期時間的時間部分 |
Year() |
返回一個日期的年份部分 |
簡單的時間對比:
但是如果order_date後面跟的有時間,那麼上面的SQL語句將匹配不出來,因此我們可以使用日期函數,僅比較表中的日期,而忽略時間:
搜尋出一個月的訂單;
但是有時不想去算這個月到底有多少天,則可以實現如下:
數值處理函數數值處理函數僅處理數值資料,這些函數一般用於代數、三角或者幾何運算。常用數值處理函數如下
函數 |
說明 |
Abs() |
返回一個數的絕對值 |
Cos() |
返回一個角度的餘弦 |
Exp() |
返回一個數的指數值 |
Mod() |
返回除操作的餘數 |
Pi() |
返回圓周率 |
Rand() |
返回一個隨機數 |
Sin() |
返回一個角度的正弦 |
Sqrt() |
返回一個數的平方根 |
Tan() |
返回一個數的正切 |
下面是一個正切的例子:
mysql的字串處理函數 貌似比php的還豐富 大家怎看?
個人觀點:由於MYSQL沒有模式比對,不支援Regex,字串處理功能完全不能和PHP相比。
一般的資料庫只要支援REPLACE、SUBSTR(或者EXCEL的LETT、RIGHT、MID)基本上就夠用了,不過MYSQL的字串函數確實非常豐富(其實MYSQL的日期處理函數也很豐富),有下面這些:
ASCII(str)
返回字串str的最左面字元的ASCII代碼值。如果str是Null 字元串,返回0。如果str是NULL,返回NULL。
ORD(str)
如果字串str最左面字元是一個多位元組字元,通過以格式((first byte ASCII code)*256+(second byte ASCII code))[*256+third byte ASCII code...]返回字元的ASCII代碼值來返回多位元組字元代碼。如果最左面的字元不是一個多位元組字元。返回與ASCII()函數返回的相同值。
CONV(N,from_base,to_base)
在不同的數字基之間變換數字。返回數字N的字串數字,從from_base基變換為to_base基,如果任何參數是NULL,返回NULL。參數N解釋為一個整數,但是可以指定為一個整數或一個字串。最小基是2且最大的基是36。如果to_base是一個負數,N被認為是一個有符號數,否則,N被當作無符號數。 CONV以64位點精度工作。
BIN(N)
返回二進位值N的一個字串表示,在此N是一個長整數(BIGINT)數字,這等價於CONV(N,10,2)。如果N是NULL,返回NULL。
OCT(N)
返回八進位值N的一個字串的表示,在此N是一個長整型數字,這等價於CONV(N,10,8)。如果N是NULL,返回NULL。
HEX(N)
返回十六進位值N一個字串的表示,在此N是一個長整型(BIGINT)數字,這等價於CONV(N,10,16)。如果N是NULL,返回NULL。
CHAR(N,...)
CHAR()將參數解釋為整數並且返回由這些整數的ASCII代碼字元組成的一個字串。NULL值被跳過。
CONCAT(str1,str2,...)
返回來自於參數連結的字串。如果任何參數是NULL,返回NULL。可以有超過2個的參數。一個數字參數被變換為等價的字串形式。
LENGTH(str)
OCTET_LENGTH(str)
CHAR_LENGTH(str)
CHARACTER_LENGTH(str)
返回字串str的長度。
LOCATE(substr,str)
POSITION(substr IN str)
返回子串substr在字串str第一個出現的位置,如果substr不是在str裡面,返回0.
LOCATE(substr,str,pos)
返回子串substr在字串str第一個出現的位置,從位置pos開始。如果substr不是在str裡面,返回0。
INSTR(str,substr)
返回子串substr在字串str中的第一個出現的位置。這與有2個參數形式的LOCATE()相同,除了參數被顛倒。
LPAD(str,len,padstr)
返回字串str,左面用字串padstr填補直到str是len個字元長。
RPAD(str,len,padstr)
返回字串str,右面用字串padstr填補直到str是len個字元長。
LEFT(str,len)
返回字串str的最左面len個字元。
......餘下全文>>
MYSQL資料庫查詢出的結果包含 \ 符號時怎處理
管理最有效手段。
資料庫設計是指:對於一個給定的應用環境,構造最優的資料庫模式,建立資料庫及其應用系統,有效儲存資料,滿足使用者資訊要求和處理要求。
資料庫設計的各階段:
A、需求分析階段:綜合各個使用者的應用需求(現實世界的需求)。
B、在概念設計階段:形成獨立於機器和各DBMS產品的概念模式(資訊世界模型),用E-R圖來描述。
C、在邏輯設計階段:將E-R圖轉換成具體的資料庫產品支援的資料模型,如關聯式模式,形成資料庫邏輯模式。然後根據使用者處理的要求,安全性的考慮,在基本表的基礎上再建立必要的視圖(VIEW)形成資料的外模式。
D、在實體設計階段:根據DBMS特點和處理的需要,進行實體儲存體安排,設計索引,形成資料庫內模式。
1. 需求分析階段
需求收集和分析,結果得到資料字典描述的資料需求(和資料流圖描述的處理需求)。
需求分析的重點:調查、收集與分析使用者在資料管理中的資訊要求、處理要求、安全性與完整性要求。
需求分析的方法:調查組織機構情況、各部門的商務活動情況、協助使用者明確對新系統的各種要求、確定新系統的邊界。
常用的調查方法有: 跟班作業、開調查會、請專人介紹、詢問、設計調查表請使用者填寫、查閱記錄。
分析和表達使用者需求的方法主要包括自頂向下和自底向上兩類方法。自頂向下的結構化分析方法(Structured Analysis,簡稱SA方法)從最上層的系統組織機構入手,採用逐層分解的方式分析系統,並把每一層用資料流圖和資料字典描述。
資料流程圖達了資料和處理過程的關係。系統中的資料則藉助資料字典(Data Dictionary,簡稱DD)來描述。
2. 概念結構設計階段
通過對使用者需求進行綜合、歸納與抽象,形成一個獨立於具體DBMS的概念性模型,可以用E-R圖表示。
概念性模型用於資訊世界的建模。概念性模型不依賴於某一個DBMS支援的資料模型。概念性模型可以轉換為電腦上某一DBMS支援的特定資料模型。
概念性模型特點:
(1) 具有較強的語義表達能力,能夠方便、直接地表達應用中的各種語義知識。
(2) 應該簡單、清晰、易於使用者理解,是使用者與資料庫設計人員之間進行交流的語言。
概念性模型設計的一種常用方法為IDEF1X方法,它就是把實體-聯絡方法應用到語義資料模型中的一種語義模型化技術,用於建立系統資訊模型。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴, 2007-09-27 15:17
本文詳細解析了資料庫設計過程、設計技巧以及總結了資料庫命名規範……
2.1 第零步——初始化工程
這個階段的任務是從目的描述和範圍描述開始,確定建模目標,開發建模計劃,組織建模隊伍,收集源材料,制定約束和規範。收集源材料是這階段的重點。通過調查和觀察結果,商務程序,原有系統的輸入輸出,各種報表,收集未經處理資料,形成了基本資料資料表。
2.2 第一步——定義實體
實體集成員都有一個共同的特徵和屬性集,可以從收集的源材料——基本資料資料表中直接或間接標識出大部分實體。根據源材料名字表中表示物的術語以及具有 “代碼”結尾的術語,如客戶代碼、代理商代碼、產品代碼等將其名詞部分代表的實體標識出來,從而初步找出潛在的實體,形成初步實體表。
2.3 第二步——定義聯絡
IDEF1X模型中只允許二元聯絡,n元聯絡必須定義為n個二元聯絡。根據實際的業務需求和規則,使用實體聯絡矩陣來標識實體間的二元關係,然後根據實際情況確定出串連關係的勢、關係名和說明,確定關聯類型,是標識關係......餘下全文>>