程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> SQL server中字符串逗號分隔函數分享,sqlserver

SQL server中字符串逗號分隔函數分享,sqlserver

編輯:更多數據庫知識

SQL server中字符串逗號分隔函數分享,sqlserver


繼SQl -Function創建函數數據庫輸出的結果用逗號隔開,在開發中也有許多以參數的形式傳入帶逗號字條串參數(數據大時不建議這樣做)

例:查找姓名為“張三,李二” 的數據此時在數據庫裡就要對此參數做處理如圖:

函數代碼如下

CREATE FUNCTION [dbo].[fnSplitStr] (
 @sText  NVARCHAR(Max),
 @sDelim  CHAR(1)
)

RETURNS @retArray TABLE (
 value VARCHAR(100)
)
AS
BEGIN
 DECLARE 
  @posStart  BIGINT,
  @posNext  BIGINT,
  @valLen   BIGINT,
  @sValue   NVARCHAR(100);

 IF @sDelim IS NULL 
 BEGIN
  IF LEN(@sText)>100 SET @sText = SUBSTRING(@sText, 1, 100)
  
  INSERT @retArray (value)
  VALUES (@sText);
 END
 ELSE
 BEGIN
  SET @posStart = 1;

  WHILE @posStart <= LEN(@sText)
  BEGIN
   SET @posNext = CHARINDEX(@sDelim, @sText, @posStart);

   IF @posNext <= 0 
    SET @valLen = LEN(@sText) - @posStart + 1;
   ELSE
    SET @valLen = @posNext - @posStart;

   SET @sValue = SUBSTRING(@sText, @posStart, @valLen);
   SET @posStart = @posStart + @valLen + 1;

   IF LEN(@sValue) > 0
   BEGIN
    IF LEN(@sValue)>100 SET @sValue = SUBSTRING(@sValue, 1, 100)
    
    INSERT @retArray (value)
    VALUES (@sValue);
   END
  END
 END
 RETURN
END

好了,關於sql字符串逗號分隔函數就介紹到這,大家可以參考一下。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved