[點晴永久免費OA]如何在SQL Server中使用內置函數或創建自定義split等函數
當前位置:點晴教程→點晴OA辦公管理信息系統
→『 經驗分享&問題答疑 』
SQLserver 中沒有內置的split函數,需要自己構建一個表值函數,具體代碼如下:
----------下面方法是以“,”來分割字符串
CREATE FUNCTION [dbo].[Split](@separator VARCHAR(64)=',',@string NVARCHAR(max))
RETURNS @ResultTab TABLE (
Id INT ,
Res NVARCHAR(500)
)
AS
BEGIN
DECLARE @Num INT
IF(@string IS NOT NULL AND @string <> '' AND LEN(@string)>0)
BEGIN
IF(CHARINDEX(@separator,@string)>0) --判斷要截取的字符是否存在
BEGIN
SET @Num=0
WHILE (CHARINDEX(@separator,@string)>0) --如果要截取的字符存在,就繼續循環
BEGIN
SET @Num=@Num+1
INSERT INTO @ResultTab(Id,Res) --截取字符串,插入表變量
SELECT @Num,LEFT(@string,CHARINDEX(@separator,@string)-1)
--把已經截取并插入的字符串刪除
SET @string=STUFF(@string,1,CHARINDEX(@separator,@string)-1+LEN(@separator),'')
END
--如果最后一個截取的字符串為空,那就不插入了
--例如:'0123,0456,0789,' 這樣的字符串最后剩下的就是空字符串了
IF(@string IS NOT NULL AND @string <> '')
BEGIN
INSERT INTO @ResultTab(Id,Res)
SELECT @Num+1,@string
END
END
ELSE
BEGIN
INSERT INTO @ResultTab(Id,Res) SELECT 1,@string
END
END
ELSE
BEGIN
DELETE FROM @ResultTab
END
RETURN
END
例如:使用“,”分割字符串 "001,002,003,004"
SQL語句:select * from [Split](',','001,002,003,004');
結果:
SQL 內置函數函數的語法內建 SQL 函數的語法是: SELECT function(列) FROM 表 函數的類型在 SQL 中,基本的函數類型和種類有若干種。函數的基本類型是:
合計函數(Aggregate functions)Aggregate 函數的操作面向一系列的值,并返回一個單一的值。 注釋:如果在 SELECT 語句的項目列表中的眾多其它表達式中使用 SELECT 語句,則這個 SELECT 必須使用 GROUP BY 語句! "Persons" table (在大部分的例子中使用過)
MS Access 中的合計函數
在 SQL Server 中的合計函數
Scalar 函數Scalar 函數的操作面向某個單一的值,并返回基于輸入值的一個單一的值。 MS Access 中的 Scalar 函數
該文章在 2021/12/18 10:31:08 編輯過 |
關鍵字查詢
相關文章
正在查詢... |