最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Sql Server數(shù)據(jù)庫(kù)中isnull、iif、case when三種方式的用法和空值判斷

 更新時(shí)間:2025年09月04日 11:04:11   作者:全棧小5  
文章介紹SQL Server中ISNULL的正確用法及CONCAT、EXISTS兩大查詢(xún)技巧,ISNULL僅支持雙參數(shù),CONCAT處理NULL避免拼接失效,EXISTS替代IN提升性能,二者分別優(yōu)化數(shù)據(jù)可靠性與查詢(xún)效率,是實(shí)用的開(kāi)發(fā)利器,感興趣的朋友跟隨小編一起看看吧

前言

有時(shí)候數(shù)據(jù)庫(kù)你接觸多了,就會(huì)知道一些技巧,說(shuō)實(shí)在有時(shí)候博主沒(méi)有接觸到,我可能還是會(huì)用普通方式去判斷,這樣就會(huì)存在漏數(shù)據(jù)的情況。
所以,平時(shí)去積累一些技巧還是非常有必要的。

ISNULL用法

在 SQL Server 中,ISNULL 函數(shù)只接受兩個(gè)參數(shù),不支持三個(gè)參數(shù)的情況。
博主剛開(kāi)始是這么用的 ISNULL(t11.ItemCode,'Y','N') ,這種寫(xiě)法是錯(cuò)誤的。

ISNULL 函數(shù)的正確語(yǔ)法是:

ISNULL(check_expression, replacement_value)

case when用法

如果需要實(shí)現(xiàn)類(lèi)似三個(gè)參數(shù)的功能(當(dāng)字段為 NULL 時(shí)返回 ‘Y’,否則返回 ‘N’),可以使用 CASE WHEN 表達(dá)式:

CASE WHEN t11.ItemCode IS NULL THEN 'Y' ELSE 'N' END

iif

或者使用更簡(jiǎn)潔的 IIF 函數(shù)(SQL Server 2012 及以上版本支持):

IIF(t11.ItemCode IS NULL, 'Y', 'N')

查詢(xún)小技巧

技巧一

使用 CONCAT 安全地拼接字符串

問(wèn)題: 傳統(tǒng)的用加號(hào) + 拼接字符串時(shí),如果任何一個(gè)字段為 NULL,整個(gè)結(jié)果都會(huì)變成 NULL

舊方法(有風(fēng)險(xiǎn)):

SELECT FirstName + ' ' + LastName AS FullName
FROM Employees;
-- 如果 FirstName 或 LastName 為 NULL,F(xiàn)ullName 就會(huì)顯示為 NULL

小技巧(使用 CONCAT):

SELECT CONCAT(FirstName, ' ', LastName) AS FullName
FROM Employees;

好處:

  • CONCAT 函數(shù)會(huì)自動(dòng)將 NULL 值視為空字符串 '' 來(lái)處理。
  • 即使 FirstNameLastName 為 NULL,其他部分依然會(huì)正常拼接,最終結(jié)果不會(huì)是 NULL。
  • 代碼更簡(jiǎn)潔易讀。

技巧二

使用 EXISTS 代替 IN 來(lái)檢查存在性

問(wèn)題: 當(dāng)使用 IN 子查詢(xún)時(shí),數(shù)據(jù)庫(kù)需要先執(zhí)行整個(gè)子查詢(xún),返回所有結(jié)果集,然后再進(jìn)行主查詢(xún)和子查詢(xún)結(jié)果的匹配,如果子查詢(xún)結(jié)果集很大,性能會(huì)較差。

舊方法(可能低效):

SELECT *
FROM Customers
WHERE CustomerID IN (
    SELECT DISTINCT CustomerID 
    FROM Orders 
    WHERE OrderDate > '2023-01-01'
);

小技巧(使用 EXISTS):

SELECT *
FROM Customers c
WHERE EXISTS (
    SELECT 1 
    FROM Orders o 
    WHERE o.CustomerID = c.CustomerID 
    AND o.OrderDate > '2023-01-01'
);

好處:

  • 性能更高EXISTS 是一種關(guān)聯(lián)子查詢(xún),一旦找到一條滿(mǎn)足條件的記錄就會(huì)立即返回 True 并停止搜索,避免了處理整個(gè)子查詢(xún)結(jié)果集。
  • 語(yǔ)義更清晰EXISTS 直接表達(dá)了“是否存在”的邏輯意圖。
  • 在子查詢(xún)結(jié)果集很大時(shí),性能提升尤為明顯。

這兩個(gè)技巧一個(gè)側(cè)重于數(shù)據(jù)的可靠性和整潔性,另一個(gè)側(cè)重于查詢(xún)的性能優(yōu)化,都是日常開(kāi)發(fā)中非常實(shí)用的“利器”。

到此這篇關(guān)于Sql Server數(shù)據(jù)庫(kù)中isnull、iif、case when三種方式的用法和空值判斷的文章就介紹到這了,更多相關(guān)sqlserver isnull、iif、case when內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

镇巴县| 霞浦县| 高邮市| 阿拉善右旗| 广汉市| 太仓市| 凤城市| 环江| 海阳市| 济源市| 嘉荫县| 定襄县| 南开区| 镇赉县| 南宫市| 甘德县| 壶关县| 临汾市| 昆明市| 莱西市| 栾城县| 邻水| 龙江县| 南昌县| 天气| 昭觉县| 赣榆县| 安西县| 大英县| 宣化县| 郧西县| 上犹县| 托里县| 寻乌县| 和静县| 湖北省| 凤翔县| 龙州县| 图木舒克市| 延长县| 巩义市|