[點晴永久免費OA]如何在SQL Server中使用內置函數(shù)或創(chuàng)建自定義split等函數(shù)
SQLserver 中沒有內置的split函數(shù),需要自己構建一個表值函數(shù),具體代碼如下:
----------下面方法是以“,”來分割字符串
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) --如果要截取的字符存在,就繼續(xù)循環(huán)
BEGIN
SET @Num=@Num+1
INSERT INTO @ResultTab(Id,Res) --截取字符串,插入表變量
SELECT @Num,LEFT(@string,CHARINDEX(@separator,@string)-1)
--把已經(jīng)截取并插入的字符串刪除
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 內置函數(shù)函數(shù)的語法內建 SQL 函數(shù)的語法是: SELECT function(列) FROM 表 函數(shù)的類型在 SQL 中,基本的函數(shù)類型和種類有若干種。函數(shù)的基本類型是:
合計函數(shù)(Aggregate functions)Aggregate 函數(shù)的操作面向一系列的值,并返回一個單一的值。 注釋:如果在 SELECT 語句的項目列表中的眾多其它表達式中使用 SELECT 語句,則這個 SELECT 必須使用 GROUP BY 語句! "Persons" table (在大部分的例子中使用過)
MS Access 中的合計函數(shù)
在 SQL Server 中的合計函數(shù)
Scalar 函數(shù)Scalar 函數(shù)的操作面向某個單一的值,并返回基于輸入值的一個單一的值。 MS Access 中的 Scalar 函數(shù)
該文章在 2021/12/18 10:31:08 編輯過 |
關鍵字查詢
相關文章
正在查詢... |