MySQL 自己不帶有 to_char 這個函數(shù)的。

創(chuàng)新互聯(lián)建站2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元沙灣做網(wǎng)站,已為上家服務(wù),為沙灣各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575
你要模仿 Oracle, 寫一個 MySQL 的 TO_CHAR 函數(shù)?
這個恐怕有點麻煩。
因為 Oracle 的 TO_CHAR 是可以把 日期型的, 數(shù)值型的, 轉(zhuǎn)換為 字符類型。
你這個MySQL 下的 to_char , 只要轉(zhuǎn)換日期呢? 還是轉(zhuǎn)換 數(shù)字?
用戶函數(shù)?那應(yīng)該是自己定義的函數(shù)吧
常用的函數(shù)有
1、MySQL 提供幾個處理null的函數(shù)
1)、ifnull(expr1,expr2):如果expr1不為null,則返回expr1,否則返回expr2;
2)、nullif(expr1,expr2):expr1與expr2相等,則返回null,否則返回expr1;
3)、if(expr1,expr2,expr3):類似于三目運算符,expr1為true,返回expr2,否則返回expr3;
4)、isnull(expr1):判斷expr1是否為null,expr1為null,返回true,否則返回false。
2、MySQL case函數(shù)
CASE 函數(shù)是一個流程控制函數(shù),作用同c++中switch語句。有如下兩種使用方法:
1)、用值比較
case value
when compareValue1 then result1
when compareValue2 then result2
……
else result
end
用value依次與各compareValue比較,相等則返回對應(yīng)的result,并退出case函數(shù)。
2)、用條件判斷
case
when condition1 then result1
when condition2 then result2
……
else result
end
各condition都為布爾表達(dá)式,從上到下判斷,為true則返回對應(yīng)的result,并退出case函數(shù)。
使用示例:
SELECT student_name,CASE
WHEN student_id3 THEN ‘初級班’
WHEN student_id=6 THEN '中級班'
ELSE ‘高級版'
END
FROM student_table;
說明:上面語句選擇student_name與student_id兩列,只是student_id用CASE 函數(shù)替換為對應(yīng)的文字說明。
3、部分時間日期函數(shù)
1)、CURTIME():返回完整的時間類型值,如:’2016-08-10 22:13:30‘;
2)、CURDATE():返回當(dāng)前日期,時間部分為0,如:’2013-08-10 00:00:00‘;
3)、ADDTIME(time1,time2):time1為time或datetime表達(dá)式,time2為time表達(dá)式,如:
addtime(’2016-08-10 22:20:00‘,’10:10:10')返回2016-08-11 08:30:10;
addtime(’2016-08-10 22:20:00‘,’1 10:10:10')返回2016-08-12 08:30:10;
addtime(’22:20:00‘,’10:10:10')返回32:30:10,所以只有時分秒時應(yīng)注意相加后的值是否大于23:59:59!
注:上面的參數(shù)值都可帶微秒[.xxxxxx]。
4、部分字符串函數(shù)
1)、LEFT(param,length):返回包含param左邊的length 個字符的字符串。length 大于param 長度時返回整個param。
2)、RIGHT(param,length):返回包含param右邊length 個字符的字符串。同理。
最大用處在于param 可以是選出的某個列的數(shù)據(jù),如最基礎(chǔ)的用法:
select LEFT(e.name,5) from table1 e;
三、常用分組和組函數(shù)
常用組函數(shù):
注:distinct:區(qū)別的。指定計算是否包含所有重復(fù)值。
1、avg([distinct|all]expr):計算多行expr的平均值,其中expr可以是變量、常量或數(shù)據(jù)列,但其類型必須是數(shù)值型;
2、count(*|[distinct|all]expr):計算多行的記錄數(shù)。expr同上,但數(shù)據(jù)類型可以是任意類型;
3、max(expr):計算多行expr的最大值,expr同count中;
4、min(expr);
5、sum([distinct|all]expr):計算多行expr的總和,expr可以是變量、常量或數(shù)據(jù)列,但數(shù)據(jù)類型必須是數(shù)值型。
group by 分組與having過濾:
語法:
#查詢結(jié)果按分組列不重復(fù)的顯示。
select * from tableName group by columnName1[,columnName2,……];
說明:對于MySQL 如果被分組的列對應(yīng)的其它列有多個對應(yīng)值,則只顯示第一條記錄的值。
mysql CREATE FUNCTION HelloWorld4()
- RETURNS VARCHAR(20)
- BEGIN
- ? RETURN 'Hello World!';
- END;
- //
Query OK, 0 rows affected (0.00 sec)
mysql select HelloWorld4() //
+---------------+
| HelloWorld4() |
+---------------+
| Hello World! ?|
+---------------+
1 row in set (0.00 sec) ...展開mysql CREATE FUNCTION HelloWorld4()
- RETURNS VARCHAR(20)
- BEGIN
- ? RETURN 'Hello World!';
- END;
- //
Query OK, 0 rows affected (0.00 sec)
mysql select HelloWorld4() //
+---------------+
| HelloWorld4() |
+---------------+
| Hello World! ?|
+---------------+
1 row in set (0.00 sec)
mysql CREATE FUNCTION HelloWorld4()
- RETURNS VARCHAR(20)
- BEGIN
- RETURN 'Hello World!';
- END;
- //
Query OK, 0 rows affected (0.00 sec)
mysql select HelloWorld4() //
+---------------+
| HelloWorld4() |
+---------------+
| Hello World! |
+---------------+
1 row in set (0.00 sec)
如果你會其它數(shù)據(jù)庫的話, 那么看看那個 SQL 存儲過程編寫 參考手冊 對你會有些幫助。
語法:Create function function_name(參數(shù)列表)returns返回值類型
函數(shù)體 函數(shù)名,應(yīng)合法的標(biāo)識符,不應(yīng)與系統(tǒng)關(guān)鍵字沖突。
一個函數(shù)應(yīng)該屬于某個數(shù)據(jù)庫,可以使用db_name.funciton_name的形式執(zhí)行當(dāng)前函數(shù)所屬數(shù)據(jù)庫,否則為當(dāng)前數(shù)據(jù)庫。
參數(shù)部分,由參數(shù)名和參數(shù)類型組成。
返回值類類型.注意,一定要有return返回值語句。
創(chuàng)建第一個函數(shù):
mysql DROP FUNCTION IF EXISTS SP_FUNC_DBDH_ONE -- 刪掉已存在函數(shù) DELIMITER -- 定義分隔符,必須要有 ,本例為 可以為得數(shù)字符,例如: $$,%%,**
mysql CREATE FUNCTION SP_FUNC_DBDH_ONE( PARA_VAR varchar(30)) -- 多個參數(shù)用,分割 參數(shù)
的類型必須是mysql列存在的類型
- RETURNS VARCHAR(100) -- 指定返回值類型,如果你不確定返回
文本長度,可以使用text
- BEGIN
- DECLARE NAYIBU_FIR VARCHAR(30) DEFAULT 'THIS IS MY FIRST,'; -- 定義變量,設(shè)置默認(rèn)值
- SET NAYIBU_FIR = concat(NAYIBU_FIR,PARA_VAR);
- RETURN NAYIBU_FIR; -- 返回值
- END $$
后面有你在前面定義的分割符號
Query OK, 0 rows affected (0.00 sec)
mysql DELIMITER
調(diào)用自定義函數(shù),輸出結(jié)果如下:
mysql SELECT SP_FUNC_DBDH_ONE('PROGRAM');
+------------------------------+
| SP_FUNC_DBDH_ONE('PROGRAM') |
+------------------------------+
| 'THIS IS MY FIRST, PROGRAM |
+------------------------------+
1 row in set (0.00 sec)
當(dāng)前文章:mysql中的函數(shù)怎么寫,MySQL字符函數(shù)
URL分享:http://chinadenli.net/article27/dseicjj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、關(guān)鍵詞優(yōu)化、ChatGPT、定制網(wǎng)站、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)