mysql nvl函數(shù)用法 如何寫(xiě)mysql中實(shí)現(xiàn)nvl功能的sql?
如何寫(xiě)mysql中實(shí)現(xiàn)nvl功能的sql?MySQL的確實(shí)有一個(gè)ISNULL ( )函數(shù)。然而,它的作品有點(diǎn)不同,微軟的ISNULL ( )函數(shù)。 MySQL中我們可以使用IFNULL ( )函數(shù),就
如何寫(xiě)mysql中實(shí)現(xiàn)nvl功能的sql?
MySQL的確實(shí)有一個(gè)ISNULL ( )函數(shù)。然而,它的作品有點(diǎn)不同,微軟的ISNULL ( )函數(shù)。 MySQL中我們可以使用IFNULL ( )函數(shù),就像這樣:
SELECT ProductName,UnitPrice*(UnitsInStock IFNULL(UnitsOnOrder,0))
FROM Products
DECLARE
t_name VARCHAR2(10)
t_course1 NUMBER
t_course2 NUMBER
t_course3 NUMBER
TYPE c_type IS REF CURSOR
cur c_type
BEGIN
OPEN cur FOR
"SELECT t_name,
SUM(CASE t_course WHEN """||"語(yǔ)文"||""" THEN t_score ELSE 0 END),
SUM(CASE t_course WHEN """||"數(shù)學(xué)"||""" THEN t_score ELSE 0 END),
SUM(CASE t_course WHEN """||"物理"||""" THEN t_score ELSE 0 END)
FROM tb GROUP BY t_name"
LOOP
FETCH cur INTO t_name,t_course1,t_course2,t_course3
EXIT WHEN cur%NOTFOUND
dbms_output.put_line(t_name||"語(yǔ)文"||t_course1||"數(shù)學(xué)"||t_course2||"物理"||t_course3)
END LOOP
CLOSE cur
數(shù)據(jù)庫(kù)中的NVL() 方法怎么用?
1、nvl(exp1,exp2)作用是如果表達(dá)式exp1為空則返回exp2表達(dá)式,如果exp1表達(dá)式不為空則返回exp1表達(dá)式。
2、但nvl函數(shù)有一個(gè)前提條件是兩個(gè)參數(shù)的數(shù)據(jù)類(lèi)型要一樣,不然會(huì)報(bào)錯(cuò)誤。如下圖由于comm是數(shù)字類(lèi)型,所以第二個(gè)參數(shù)不能是其它類(lèi)型。
3、nvl2函數(shù)語(yǔ)法nvl2(exp1,exp2,exp3)這個(gè)函數(shù)需要有三個(gè)參數(shù)。它的使用是如果exp1為空則返回exp3,如果exp1不為空則返回exp2。
4、但有一點(diǎn)需要注意的是nvl2函數(shù)中exp2與exp3數(shù)據(jù)類(lèi)型要一樣,不然也會(huì)報(bào)錯(cuò)。
5、但nvl2函數(shù)另外一點(diǎn)也需要注意,就是當(dāng)exp2與exp3兩個(gè)參數(shù)數(shù)據(jù)類(lèi)型不一樣的時(shí)候,exp3參數(shù)數(shù)據(jù)類(lèi)型會(huì)轉(zhuǎn)換為exp2數(shù)據(jù)類(lèi)型,但前提是可以進(jìn)行轉(zhuǎn)換才可以,如果不能進(jìn)行轉(zhuǎn)換是會(huì)報(bào)錯(cuò)誤的。
6、nullif函數(shù)語(yǔ)法,nullif(exp1,exp2)它的作用是如果exp1與exp2兩個(gè)參數(shù)的值相等則返回空,如果不相等則返回exp1,同樣兩個(gè)參數(shù)的數(shù)據(jù)類(lèi)型也要一樣。
數(shù)據(jù)庫(kù)中nvl是什么意思?
NVL是通過(guò)查詢(xún)獲得某個(gè)字段的合計(jì)值,如果這個(gè)值為null將給出一個(gè)預(yù)設(shè)的默認(rèn)值。如果是NULL, 則取指定值。具體使用格式如下:NVL( string1, replace_with)具體功能如下:如果string1為NULL,則NVL函數(shù)返回replace_with的值,否則返回原來(lái)的值。引申一下,此NVL的作用與SQLserver 中的 ISNULL( string1, replace_with) 一樣。具體使用注意事項(xiàng)如下:string1和replace_with必須為同一數(shù)據(jù)類(lèi)型,除非顯式的使用TO_CHAR函數(shù)。例:NVL(TO_CHAR(numeric_column), "some string") 其中numeric_column代指某個(gè)數(shù)字類(lèi)型的值。例:nvl(yanlei777,0) > 0NVL(yanlei777, 0) 的意思是 如果 yanlei777 是NULL, 則取 0值