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中字串拆分仿造split功能SQLServer字串
- sqlserver 拆分SQLServer
- SqlServer中將字串轉utf-8的函式、支援中文的UrlEncode函式SQLServer字串函式
- Python 偏函式介紹及應用Python函式
- 分散式應用服務的拆分分散式
- SQLSERVER日期函式(zt)SQLServer函式
- C++分割字串,及strtok函式使用C++字串函式
- 用Java拆分字串示例和技巧 -DreamixJava字串
- hive時間日期函式及典型場景應用Hive函式
- 執行緒建立的函式及應用小結執行緒函式
- MySQL(四)日期函式 NULL函式 字串函式MySql函式Null字串
- Oracle 字串函式Oracle字串函式
- Oracle 字串函式Oracle字串函式
- 字串函式 metaphone ()字串函式
- 字串函式 print ()字串函式
- 字串函式 explode ()字串函式
- 字串函式 ord ()字串函式
- 字串函式 ltrim ()字串函式
- 字串函式 levenshtein ()字串函式
- 字串函式 lcfirst ()字串函式
- 字串函式 implode ()字串函式
- 字串函式 fprintf ()字串函式
- 字串函式 htmlentities ()字串函式HTML
- 字串函式 htmlspecialchars ()字串函式HTML
- PHP字串函式PHP字串函式
- SqlServer 查詢的幾種方式以及數字函式、時間函式的應用總結(迴歸基礎)SQLServer函式
- 【C語言】常用的字串函式及相關函式的自我實現C語言字串函式
- 如何解構單體前端應用——前端應用的微服務式拆分前端微服務
- MySQL 字串函式:字串擷取MySql字串函式
- 函式柯里化和偏函式應用函式
- Java 函式式介面 lamada 應用Java函式
- Vue函式式元件的應用Vue函式元件
- 程序間通訊函式介面及應用模板小結函式
- PHP 每日一函式 — 字串函式 crypt ()PHP函式字串
- PHP 每日一函式 — 字串函式 chr ()PHP函式字串
- PHP 每日一函式 — 字串函式 addslashes ()PHP函式字串
- PHP 每日一函式 — 字串函式 addcslashes ()PHP函式字串