雖然有很多想寫的題材,但本回因為時間有限,就只能挑幾個主要的功能介紹一下。
自訂函數常常用在一些要修正資料、判斷資料內容進行分類的場合,因此有時候會用到這功能。
這邊也是超簡單介紹一下:
新增函式語法大致如下:
CREATE FUNCTION dbo.函式名稱(輸入值)
AS
BEGIN
宣告
主程式
END
GO
刪除函式語法如下:
IF OBJECT_ID(N'dbo.函式名稱', N'FN') IS NOT NULL
DROP FUNCTION dbo.函式名稱
GO
這是本回的程式:
USE [school]
GO
IF OBJECT_ID(N'dbo.NumberToChinese', N'FN') IS NOT NULL
DROP FUNCTION dbo.NumberToChinese
GO
CREATE FUNCTION dbo.NumberToChinese (@input AS NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @result AS NVARCHAR(MAX) = N'';
DECLARE @chineseNumbers AS NVARCHAR(10) = N'零一二三四五六七八九';
DECLARE @length AS INT = LEN(@input);
DECLARE @i AS INT = 1;
WHILE @i <= @length
BEGIN
DECLARE @currentChar AS NVARCHAR(1) = SUBSTRING(@input, @i, 1);
IF @currentChar BETWEEN '0' AND '9'
BEGIN
SET @result += SUBSTRING(@chineseNumbers, CAST(@currentChar AS INT) + 1, 1);
END
ELSE
BEGIN
SET @result += @currentChar;
END
SET @i += 1;
END
RETURN @result;
END
GO
新增函式的方式和上篇預存程序很像,USE切換資料表後,執行以上函式,新增成功就能看到以下的函數區塊有新的物件:
指令就一行,和上個星期的預存程序很像,但是函數是可以直接select查詢的,比預存程序容易使用。
SELECT dbo.NumberToChinese('12345') as '數字轉中文';
程式是可以再請chatGPT再複雜一點但就只是文章篇幅比較多,看來只要一個例子就足夠了。能拿來產生程式碼協助說明,chatGPT真的好用。