sqlserver拆分字串函式 及應用
USE [dataChange]
GO
/****** Object: UserDefinedFunction [dbo].[f_splitSTR] Script Date: 05/09/2016 15:04:21 <span style="color:#ff0000;">自己修改資料庫名,直接執行就可以了</span>******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[f_splitSTR](
@s varchar(8000), --待分拆的字串
@split varchar(10) --資料分隔符
)RETURNS @re TABLE(
col varchar(max))
AS
BEGIN
DECLARE
@splitlen int
-- 取分隔符的長度, 在分隔符後面加一個字元是為了避免分隔符以空格結束時, 取不到正確的長度
SET @splitlen = LEN(@split + 'a') - 2
-- 如果待分拆的字串中存在資料分隔符, 則迴圈取出每個資料項
WHILE CHARINDEX(@split, @s)>0
BEGIN
-- 取第一個資料分隔符前的資料項
INSERT @re VALUES(LEFT(@s, CHARINDEX(@split, @s) - 1))
-- 將已經取出的第一個資料項和資料分隔符從待分拆的字串中去掉
SET @s = STUFF(@s, 1, CHARINDEX(@split, @s) + @splitlen, '')
END
-- 儲存最後一個資料項(最後一個資料項後面沒有資料分隔符, 故在前面的迴圈中不會被處理)
INSERT @re VALUES(@s)
RETURN
end
應用sql:實現資料分割 如資料:
B41J-002/145%B41J-002/15%B41J-003/36%B41J-000/00%B43K-001/00%B41J-002/045%B41J-002/055%B41J-002/21%B43K-008/00%B81B-007/04%B43K-029/00%B43K-027/00%B43K-029/093
取每一組%資料中的前一位組合起來用%分割 得到資料為
B%B%B%B%B%B%B%B%B%B%B%B%B
update [<span style="font-family: Arial, Helvetica, sans-serif;">dataChange</span><span style="font-family: Arial, Helvetica, sans-serif;">].[dbo].[Patent_Info]</span>
set IPC_ALL1 = temp.IPC1
from (
select PUB_NO,IPC1 = STUFF(
(select '%'+ltrim(IPC1)
from
(select c.PUB_NO, SUBSTRING(COL,0,2) as IPC1
from(
Select B.*,A.IPC_ALL,A.PUB_NO FROM [<span style="font-family: Arial, Helvetica, sans-serif;">dataChange</span><span style="font-family: Arial, Helvetica, sans-serif;">].[dbo].[Patent_Info] A cross apply [</span><span style="font-family: Arial, Helvetica, sans-serif;">dataChange</span><span style="font-family: Arial, Helvetica, sans-serif;">].[dbo].f_splitSTR(IPC_ALL,'%') B</span>
)c
)tt
where PUB_NO= t.PUB_NO for XML path('')
),1,1,'')
from
(select c.PUB_NO, SUBSTRING(COL,0,2) as IPC1
from(
Select B.*,A.IPC_ALL,A.PUB_NO FROM [<span style="font-family: Arial, Helvetica, sans-serif;">dataChange</span><span style="font-family: Arial, Helvetica, sans-serif;">].[dbo].[Patent_Info] A cross apply [</span><span style="font-family: Arial, Helvetica, sans-serif;">dataChange</span><span style="font-family: Arial, Helvetica, sans-serif;">].[dbo].f_splitSTR(IPC_ALL,'%')B)c</span><span style="font-family: Arial, Helvetica, sans-serif;">
</span> )t
group by PUB_NO
)temp
where Patent_Info.PUB_NO = temp.PUB_NO
PUB_NO為資料表唯一欄位標識
相關文章
- SQLServer用函式實現對字串按照特定字元進行拆分SQLServer函式字串字元
- SqlServer——字串處理函式SQLServer字串函式
- 字串函式的應用及做題總結字串函式
- SqlServer中字串拆分仿造split功能SQLServer字串
- sqlserver字串拆分(split)方法彙總SQLServer字串
- sqlserver 拆分SQLServer
- 分散式應用服務的拆分分散式
- Oracle自定義函式---按照某個分隔符拆分字串Oracle函式字串
- SqlServer常用函式SQLServer函式
- SqlServer中將字串轉utf-8的函式、支援中文的UrlEncode函式SQLServer字串函式
- Python 偏函式介紹及應用Python函式
- php輸出帶變數字串(echo函式的應用)PHP變數字串函式
- C++分割字串,及strtok函式使用C++字串函式
- SQLSERVER日期函式(zt)SQLServer函式
- SqlServer——系統函式SQLServer函式
- sqlserver DATEPART函式使用SQLServer函式
- MySQL 通過SUBSTRING_INDEX函式拆分字串為陣列單元MySqlIndex函式字串陣列
- 用Java拆分字串示例和技巧 -DreamixJava字串
- 字串函式之Strtok()函式字串函式
- 應用SQLServer For XML 生成XML避免在C# 拼字串SQLServerXMLC#字串
- JavaScript中常見的字串操作函式及用法JavaScript字串函式
- hive時間日期函式及典型場景應用Hive函式
- 執行緒建立的函式及應用小結執行緒函式
- 如何解構單體前端應用——前端應用的微服務式拆分前端微服務
- gethostbyname函式和getservbyname函式的應用函式
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- 字串函式 fprintf ()字串函式
- 字串函式 htmlentities ()字串函式HTML
- 字串函式 htmlspecialchars ()字串函式HTML
- 字串函式 implode ()字串函式
- 字串函式 explode ()字串函式
- 字串函式 lcfirst ()字串函式
- 字串函式 levenshtein ()字串函式
- 字串函式 ltrim ()字串函式
- 字串函式 metaphone ()字串函式
- 字串函式 print ()字串函式
- Oracle 字串函式Oracle字串函式
- Oracle 字串函式Oracle字串函式