Q
分割在存儲過程中
-4
A
回答
0
值可以創建一個存儲過程爲:
CREATE PROC splitstring @ STR1 VARCHAR (100),
@ str2 varchar(1),
@laststr VARCHAR(100)OUT
AS
BEGIN
DECLARE @len INT
DECLARE @i INT = 1
SELECT @len=LEN(@str)
WHILE(@i <[email protected])
BEGIN
if (SUBSTRING(@str1,@i,1)[email protected])
BEGIN
SELECT @laststr = SUBSTRING(@str1,@i+1,@len)
break
END
SELECT @i = @i + 1
END
END
和使用以下查詢
DECLARE @laststr VARCHAR(100) EXEC lastpart @ STR1 = 'ABC/XYZ',@ STR2 = '/',@ laststr = @ laststr出 選擇@laststr
0
創建下面的表值函數:
你就可以得到像
select * from dbo.fn_split(@str1,@str2)
CREATE FUNCTION [dbo].[fn_Split](@sText varchar(8000), @sDelim varchar(20) = ' ')
RETURNS @retArray TABLE (idx smallint Primary Key, value varchar(8000))
AS
BEGIN
DECLARE @idx smallint,
@value varchar(8000),
@bcontinue bit,
@iStrike smallint,
@iDelimlength tinyint
IF @sDelim = 'Space'
BEGIN
SET @sDelim = ' '
END
SET @idx = 0
SET @sText = LTrim(RTrim(@sText))
SET @iDelimlength = DATALENGTH(@sDelim)
SET @bcontinue = 1
IF NOT ((@iDelimlength = 0) or (@sDelim = 'Empty'))
BEGIN
WHILE @bcontinue = 1
BEGIN
--If you can find the delimiter in the text, retrieve the first element and
--insert it with its index into the return table.
IF CHARINDEX(@sDelim, @sText)>0
BEGIN
SET @value = SUBSTRING(@sText,1, CHARINDEX(@sDelim,@sText)-1)
BEGIN
INSERT @retArray (idx, value)
VALUES (@idx, @value)
END
--Trim the element and its delimiter from the front of the string.
--Increment the index and loop.
SET @iStrike = DATALENGTH(@value) + @iDelimlength
SET @idx = @idx + 1
SET @sText = LTrim(Right(@sText,DATALENGTH(@sText) - @iStrike))
END
ELSE
BEGIN
--If you can’t find the delimiter in the text, @sText is the last value in
[email protected]
SET @value = @sText
BEGIN
INSERT @retArray (idx, value)
VALUES (@idx, @value)
END
--Exit the WHILE loop.
SET @bcontinue = 0
END
END
END
ELSE
BEGIN
WHILE @bcontinue=1
BEGIN
--If the delimiter is an empty string, check for remaining text
--instead of a delimiter. Insert the first character into the
--retArray table. Trim the character from the front of the string.
--Increment the index and loop.
IF DATALENGTH(@sText)>1
BEGIN
SET @value = SUBSTRING(@sText,1,1)
BEGIN
INSERT @retArray (idx, value)
VALUES (@idx, @value)
END
SET @idx = @idx+1
SET @sText = SUBSTRING(@sText,2,DATALENGTH(@sText)-1)
END
ELSE
BEGIN
--One character remains.
--Insert the character, and exit the WHILE loop.
INSERT @retArray (idx, value)
VALUES (@idx, @sText)
SET @bcontinue = 0
END
END
END
RETURN
END
相關問題
- 1. 分割分隔字符串到變量在存儲過程中
- 2. 在存儲過程中分割後生成插入語句
- 3. mySQL按分隔符分割字符串的存儲過程
- 4. 在PL/SQL存儲過程中分割逗號分隔的字符串
- 5. 在存儲過程中分組
- 6. 在存儲過程中拆分文本
- 7. 通過存儲過程中的分頁
- 8. 分頁與存儲過程
- 9. 如何存儲在存儲過程中
- 10. 在MySQL中調用存儲過程中的存儲過程
- 11. 從存儲過程中調用存儲過程在MySQL中
- 12. 何時在存儲過程中使用CTE在存儲過程
- 13. accep_nested_attributes_for:tags?通過關聯分割和存儲逗號分隔標籤
- 14. 想了解在存儲過程分裂()
- 15. 策略在存儲過程分頁
- 16. 在nHibernate中存儲過程?
- 17. 在phpmyadmin中存儲過程
- 18. 在MongoDB中存儲過程
- 19. 在存儲過程中
- 20. 在C中存儲過程#
- 21. 凡在存儲過程中
- 22. 在phpMyAdmin中存儲過程
- 23. 在存儲過程中
- 24. Linq在存儲過程中
- 25. 在存儲過程中
- 26. 在存儲過程中
- 27. 在php中存儲過程
- 28. SQL:在存儲過程中使用存儲過程
- 29. 如何在存儲過程中使用每個存儲過程?
- 30. 在存儲過程中執行帶參數的存儲過程
只是谷歌,你會發現百SQL中字符串拆分函數的不同實現... – 2014-08-28 08:15:24