定義:函式:根據輸入,按照既定的邏輯返回預期的結果。
常見的函式分類:
函式分類
示例數值函式
型別轉換函式、絕對值函式、指數函式。。。
文字函式
拼接函式、擷取函式、轉換函式。。。
日期和時間函式
格式化函式、擷取函式、系統日期。。。
ps:不同的資料庫,函式名及引數差別較大。使用時以具體的資料庫說明文件為準。
常見數值函式
函式作用
示例abs(n)
返回n的絕對值
abs(-3) = 3
round(n,d)
返回n的四捨五入值,保留d位小數
round(3.234,2) = 3.23
rand()
返回0~1之間的隨機數
rand()可能返回0.2511382673
pow(x,y)
返回x的y次冪
pow(2,3) = 8
mod(m,n)
返回m除以n的餘數
mod(7,3) = 1
三角函式
實現三角運算的函式,如sin,cos,tan等
sin(90) = 0.89399666360055785
比如:如何從**交易明細表中返回正數的交易數量?
如何從**交易明細表中返回交易費用(只保留2位小數字)?
select volume,abs(volume) from t_stock_trans_dtl;select fee,2,round(fee,2) from t_stock_trans_dtl;
常見文字函式
函式作用
示例length(str)
返回字串str的長度
length('abced') = 5
left(str,n)
返回字串的左端n個字元
left('abcde',3) = 'abc'
right(str,n)
返回字串str的右端n個字元
right('abcde',3) = 'cde'
trim(str)
刪除str左右兩邊的空格
trim(' abc ') = 'abc'
upper(str)
將字串str轉換為大寫
upper('abc') = 'abc'
lower(str)
將字串str轉為小寫
lower('abc') = 'abc'
substring(str,m,n)
返回從字串str第m位後面的n個字元
substring('abcde',2,3) = 'bcd'
instr(str1,str2)
返回字串str2在str1中首次出現的位置
instr('foobarbar','bar') = 4
concat(str1,str2)
返回字串str1,str2,……, 按順序拼接後結果
concat('abc','defg','h') = 'abcdefgh'
substring(str,m,n) : mysql的位置從1開始算起,不是0!!!
比如:如何根據**交易明細表中的****,返回**所在的**交易所?
select stock_code,left(stock_code,2) from t_stock_trans_dtl;select stock_code,substring(stock_code,1,2) from t_stock_trans_dtl;
常見日期和時間函式。
注意:這個函式在不同資料庫使用方法差別較大
函式作用
示例current_date()
返回當前日期
current_date()可能的返回值'2020-05-15'
current_time()
返回當前時間
current_time()可能的返回值'12:34:10'
year(date)
返回日期date所在的年份
year('2020-05-15') = 2020
month(date)
返回日期date所在的月份
year('2020-05-15') = 5
day(date)
返回日期date所在的日期
year('2020-05-15') = 15
hour(date)
返回日期date所在的小時
hour('12:34:10') = 12
minute(date)
返回日期date所在的分鐘
minute('12:34:10') = 34
dayofyear(date)
返回date是當年的第幾天
dayofyear('2020-05-15') = 136
dayofmonth(date)
返回date是當月的第幾天
dayofmonth('2020-05-15') = 15
dayofweek(date)
返回date是當周的第幾天 (第1天是週日)
dayofweek('2020-05-15') = 6
date_format(date,格式)
返回date格式化後的結果
date_format(current_date(),'%y') = 2020
比如:如何返回**交易明細表中交易日期(只返回年月日,去掉時分秒?)
select opt_tm,date_format(opt_tm,%y-%m-%d') from t_stock_trans_dtl
比如:如何根據**交易明細表中的****,返回**所在的**交易所(要求返回大寫字母)?
select stock_code,upper(left(stock_code,2)) from t_stock_trans_dtl
class10 建立新的輸出字段
比如 資料庫中數量的單位是股,如何轉換為手 一手 股 後輸出?如何根據 交易表中的單價 數量,計算出交易金額?數量 股轉換成手 select trans id,stock name,stock code,volume 100 from t stock trans dtl 計算交易金額 select ...
使用新的vs建立物件
在執行任務期間,我看到其他開發人員,他們使用 allargsconstructor access accesslevel.private 建立了乙個類,該類使該類的建構函式私有.然後,他們使用代替建立乙個物件.使用new和of建立之間有什麼區別?a a new a a a a.of allargsc...
使用Flex Bison建立新的程式語言
對原始檔進行掃瞄,將原始檔的字元流拆分分乙個個的詞 記號 此為詞法分析 根據語法規則將這些記號構造出語法樹,此為語法分析 對語法樹的各個節點之間的關係進行檢查,檢查語義規則是否被違背,同時對語法樹進行必要的優化,此為語義分析 遍歷語法樹的節點,將各節點轉化為中間 並按特定的順序拼裝起來,此為中間 生...