mysql資料庫學習筆記(五)----mysql字串函式、日期時間函式
一、常見字串函式:
1、char_length 獲取長度(字元為單位)
2、format 格式化
3、insert 替換的方式插入
4、instr 獲取位置
5、left/right 取左、取右
6、length 獲取長度(位元組為單位)
7、ltrim/rtrim/trim 去空格(左/右/自定義)
8、strcmp 字串比較
9、concat 字串拼接
10、substring 字串擷取
1、char_length:獲取長度(字元為單位)
char_length(str)
解釋:返回值為字串str的長度,計算的單位為字元(乙個中文也算乙個字元)
舉例:如果是查詢已知**裡的字段長度,可以這樣寫:
2、format:
format(x,d)
解釋:將數字x的格式寫為以四捨五入的方式保留小數點後d位,並將結果以字串的形式返回。若d為0, 則返回結果不帶有小數點,或不含小數部分。
舉例:3、insert:替換的方式插入
insert (str,pos,len,newstr)
解釋:返回字串str,從原str的pos位置開始,用字串newstr來替換,替換的長度為len。
如果pos超過字串長度,則返回值為原始字串。假如len的長度超過後面字串的長度,則從位置pos開始替換到字串的結尾即可。
四個引數中若任何乙個引數為的值為null,則整個函式的返回值為null。
舉例:將smyh001替換為smyh002
4、instr:查詢子字串的位置
instr(str,substr)
解釋:返回字串str中首次出現子字串substr的位置。
舉例:5、left/right:字串擷取
左擷取:
left(str,len)
解釋:返回字串str中,從左邊開始算起的,前len個字元。
右擷取:
right(str,len)
解釋:返回字串str中,從右邊開始算起的,前len個字元。
6、length:求字串長度(以位元組為單位)
length(str)
解釋:返回值為字串str的長度,單位為位元組。乙個多位元組字元算作多位元組。
這意味著對於乙個包含五個2位元組字元的字串,length()的返回值為10,而char_length()的返回值則為5。
注: gbk 編碼中,乙個中文字元是2個位元組。
utf-8編碼中,乙個中文字元是3個位元組,乙個英文本元是2個位元組。
7、ltrim/rtrim/trim 去空格(左/右/自定義):
去掉左邊的空格:
ltrim(str)
解釋:返回字串str,其引導空格字元被刪除。
去掉中間的空格:
rtrim(str)
解釋:返回字串str,其結尾空格字元被刪除。
自定義去空格:
trim([ [remstr] from] str)
注:大括號和中括號裡面的引數為可選項,如果全部都加上的話,預設為引數both。
解釋:將原字串str去掉空格返回。只去開頭(leading)的空格,只去結尾(trailng)的空格,或者同時去掉(both)開頭和結尾的空格都行。
若分類符both、leadin或trailing中沒有乙個是給定的,則假設為both。
trim([remstr from] str)
解釋:remstr關鍵字的作用是去掉指定字元。 即所有包含remstr的字首和/或字尾將被刪除。未指定情況下,即刪除空格。
官方文件的舉例:
8、strcmp:判斷字串是否相等
strcmp(expr1,expr2)
解釋:判斷兩個字串是否相等。若所有的字串均相同,則返回0;若根據當前分類次序,第乙個引數小於第二個,則返回-1;其它情況返回1。功能和比較器類似。
注:字串的大小是按照ansi編碼來比較的。
舉例:9、concat:字串拼接
concat(str1,str2,...)
解釋:返回結果為連將str1、str2···拼接之後產生的字串。如有任何乙個引數為null ,則返回值為 null。括號裡可能有乙個或多個引數。
如果所有引數均為非二進位制字串,則結果為非二進位制字串。如果自變數中含有任意乙個二進位制字串,則結果為乙個二進位制字串。乙個數字引數將自動轉化為與之相等的二進位制字串格式。
若要避免這種情況二進位制的情況出現,可使用顯式型別 cast(str),將二進位制的字串轉換為非二進位制字串。例如:select concat(cast(int_col as char), char_col)
舉例:(n**icat編輯器會自動將二進位制字串轉換為非二進位制字串)
10、substring:字串擷取
substring(str,pos)
substring(str from pos)
substring(str,pos,len)
substring(str from pos for len)
解釋:不帶有len 引數的格式從字串str返回乙個子字串,起始於位置 pos。帶有len引數的格式從字串str返回乙個長度同len字元相同的子字串,起始於位置 pos。
使用from的格式為標準sql語法。
也可能對pos使用乙個負值。假若這樣,則子字串的位置起始於字串結尾的pos字元(也就是說,pos為正時,從左邊算起;pos為負時,從右邊算起)。
官方文件舉例如下:
二、常見日期時間函式:
1、dayofweek、 dayofyear、dayofmonth
2、weekday
3、year、quarter、month、
4、hour、minute、second
5、to days、from days
6、curdate、curtime、now 獲取當前時間
1、dayofweek、 dayofyear、dayofmonth
求星期幾:(一周中的第幾天)
dayofweek(date)
解釋:返回date(1=週日,2=周一, ...,7=週六)對應的工作日索引。即:date對應的範圍是1至7。
求一年中的某天是第幾天:(一年中的第幾天)
dayofyear(date)
返回date對應的一年中的天數,範圍是從1到366。
求乙個月中的某天是第幾天:(乙個月的第幾天)
dayofmonth(date)
返回date對應的該月日期,範圍是從1到31。注:day(date) 和dayofmonth(date)的含義相同。
舉例:2、weekday:
求星期幾:(一周的第幾天)
weekday(date)
解釋:返回date(0 = 周一, 1 = 周二, ... 6 = 週日)對應的工作日索引。即:date對應的範圍是0至6。
注:dayofweek(date)和weekday(date)的功能相同,唯一的區別在於date對應的取值範圍。
3、 year、quarter、month
求年份:
year(date)
解釋:返回date對應的年份,範圍是從1000到9999。
求季度:
quarter(date)
解釋:返回date對應的一年中的季度值,範圍是從1到4。
求月份:(該月是一年當中的第幾個月)
month(date)
解釋:返回date 對應的月份,範圍是從1到12。
舉例:4、hour、minute、second
求小時:
hour(time)
解釋:返回time 對應的小時數。對於日時值的返回值範圍是從0到23 。
求分鐘:
minute(time)
解釋:返回time對應的分鐘數,範圍是從0到59。
求秒數:
second(time)
解釋:返回time對應的秒數,範圍是從0到59。
舉例:5、to_days、from_days
求某日期,一共經歷了多少天:(歷史長河中)
to_days(date)
解釋:給定乙個日期date, 返回乙個天數 (從年份0開始的天數 )。
求歷史長河中的第某天,的日期:
from_days(n)
解釋:給定乙個天數 n, 返回乙個date值。
使用from_days()處理古老日期時,務必謹慎,他不用於處理陽曆出現前的天數(1582)。
6、curdate、curtime、now
求當前的年月日:
curdate()
解釋:將當前日期按照'yyyy-mm-dd'或yyyymmdd格式的值返回,具體格式根據函式用在字串或是數字語境中而定。
舉例: 求當前的時分秒:
curtime()
解釋:將當前時間以'hh:mm:ss'或hhmmss的格式返回,具體格式根據函式用在字串或是數字語境中而定。
舉例: 求當前的年月日、時分秒:
now()
舉例:注:如果now是放在語句當中,要看具體欄位的格式要求。比如說,如果是放在date欄位中,則只顯示年月日;如果是放在datetime欄位中,則同時顯示年月日和時分秒。
SYBASE資料庫學習筆記
sybase菜鳥學習筆記 sybase版本 ase 12.5.4 中文版 1 無法load資料庫,提示can t open a connection to site syb backup 問題產生原因 1 sybase資料庫備份伺服器沒有啟動 2 當使用backup server做dump load...
01 MySql資料庫安裝
pos 2.0系列使用者手冊 拿到的安裝程式包內容應該如下圖所示由三部分組成 但是 非必須部分 不是必須的 為了使用者資料的安全,一般來講不要在c盤存放使用者的銷售資料,所以我們在d盤建立了名為pos的資料夾用來存放使用者的銷售資料。一 安裝資料庫伺服器 雙擊 開始進行mysql資料庫伺服器的安裝。...
SQL server資料庫總結筆記
建表的兩種方式 一 兒子,爸爸,爺爺式 包含式,屬於式 至少需要兩個表。經典案例 學校 班級 學生 建表訣竅 1 乙個物件 實體 乙個表 2 小表裡面有大表 主鍵 下級的小表包含上一級大表的主鍵,比如學生表裡面包含班級表的主鍵,班級表包含學校表的主鍵,學生表裡面沒有必要包含學校表的主鍵,不是不行,而...