sqlserver拆分字符串函数 及应用
来源:互联网 发布:mac鼠标windows10系统 编辑:程序博客网 时间:2024/06/05 06:23
USE [dataChange]GO/****** Object: UserDefinedFunction [dbo].[f_splitSTR] Script Date: 05/09/2016 15:04:21 <span style="color:#ff0000;">自己修改数据库名,直接执行就可以了</span>******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER FUNCTION [dbo].[f_splitSTR](@s varchar(8000), --待分拆的字符串@split varchar(10) --数据分隔符)RETURNS @re TABLE(col varchar(max))ASBEGINDECLARE @splitlen int-- 取分隔符的长度, 在分隔符后面加一个字符是为了避免分隔符以空格结束时, 取不到正确的长度SET @splitlen = LEN(@split + 'a') - 2-- 如果待分拆的字符串中存在数据分隔符, 则循环取出每个数据项WHILE CHARINDEX(@split, @s)>0BEGIN-- 取第一个数据分隔符前的数据项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.IPC1from ( select PUB_NO,IPC1 = STUFF((select '%'+ltrim(IPC1) from (select c.PUB_NO, SUBSTRING(COL,0,2) as IPC1from(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 )ttwhere PUB_NO= t.PUB_NO for XML path('')),1,1,'')from (select c.PUB_NO, SUBSTRING(COL,0,2) as IPC1from(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>)tgroup by PUB_NO)tempwhere Patent_Info.PUB_NO = temp.PUB_NO
PUB_NO为数据表唯一字段标识
0 0
- sqlserver拆分字符串函数 及应用
- * SQLServer字符串批量拆分函数
- sqlserver中自定义字符串拆分函数
- 拆分公式函数及应用
- sqlserver字符串拆分
- SQLServer利用表值函数拆分字符串一例分析
- sqlserver中拆分字符串问题
- 【SqlServer】字符串拆分需求实现
- oracle 拆分字符串函数
- 字符串拆分函数 sql2000
- 各种字符串拆分函数
- Oracle拆分字符串函数
- 拆分字符串函数
- Oracle拆分字符串函数
- 各种字符串拆分函数
- ORACLE拆分字符串函数
- Oracle拆分字符串函数
- Oracle拆分字符串函数
- 如何进行Web服务的性能测试?
- Linux权限位)(S位)
- 设计模式读书笔记-----组合模式
- ISO中根据URL下载图片,请求图片
- fleStpecxEyarrAfotcudorP.238
- sqlserver拆分字符串函数 及应用
- Java Observer 观察者模式 程序 总结
- matlab中的imshow函数的问题
- Quartz2D绘图(2)画线条
- Storm 基础 -- spout与bolt设置多重grouping
- Snmp学习总结(一)——Snmp的基本概念
- Android 快速发布开源项目到jcenter
- 让a标签上传文件
- -bash: ssh: command not found