Sqlserver 標量函數


     以前只是了解標量函數這個概念,感覺使用量好像並不大,等我真正做sql編碼的時候才發現它的好處。簡直太方便了實用了。

    我們知道在進行軟件開發的時候要定義很多不同類型,每個類型又會分很多項。比如:

   

 

     搞前端都知道,這就是得下拉框。大多數這樣得下拉搜索框都是動態得,也就是說我可以隨時增減這里面得項數。而它得value值,一般也都是  value=(int  ) text=開關電源。

 

 

    牽扯到像這種類型得動態改變下拉框,那么一般數據都要保存得數據庫中了,(當然你也可以自己定義一個js文件,改變js文件內容也可以做到),如果存入數據庫中,那是怎末存得呢,直接存text值,那么后台取值一般都是去value值。所以,像這樣數據庫一般都是存value值。但頁面顯示得時候,用戶需要看到得確實text值,而不是一個數字。像這種情況只能兩個都存了。而實際我我們只存value只。比如局站類型:

 

 

 

      但是,開發一個軟件像這種下拉框太多了,都這樣存那就比較煩人了,而已不利於后期得管理和維護。那么要怎末做呢。 一般來說,都會建一個字典,專門用來存這些數據得字典。

 

 

 

 

這樣就可以動態改變項數,和改變每一項得參數了。

  但是如果這樣做的話,我們在從數據庫中取數據的時候,取得只是id,但是平台要顯示真是類型名字 。比如局站類型:

 

而這里就要做到我們今天要說的標量函數了。 我們在數據庫中新建一個標量函數 Sys_ItemName:

USE [SmartNet]
GO
/****** Object:  UserDefinedFunction [dbo].[Sys_ItemName]    Script Date: 2019/10/25 星期五 14:45:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Sys_ItemName]
(
	@ItemValue varchar(30),
    @PValue varchar(30)
)
RETURNS nvarchar(50)
AS
BEGIN

	DECLARE @ItemName nvarchar(50);
    set @ItemName=''

	SELECT @ItemName = ItemName FROM Sys_DataItem WHERE ItemValue=@ItemValue and PValue=@PValue

	RETURN @ItemName

END

  而這個函數要取得數據就是我們上面建的通用字典了。

 

 標量函數中,我們定義的兩個變量:@ItemValue varchar(30),@PValue varchar(30) 也就是,字典表中對應的ItemValue ,PValue 兩列值了。

     那接下來就是如何用這個標量函數了:

     比如我們根據上面的局站信息表來做演示,查詢局站信息表中的所有數據,這里我們只取這一列做演示:

    

 

 這里我們可以看到局站信息表中,局站類型的id了:和上面的數據庫字典對應,(1代表 基站,2代表支局,3代表端局)。但是我做了我們正常搜索,但顯示的都是id,頁面列表顯示總不能都是數字吧,那樣只能自己知道是什么了。所以,如果用到標量函數,這個問題就迎刃而解了。

 

  大家可以看到上面的查詢結果是真名了。

      其實說標量函數,也就是幾句話而已,但是我想的是,要用實際場景的實際應用來演示會更容易了解!

 

   

 

 

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM