sqlserver字符串拆分(split)方法汇总
--方法0:动态SQL法 declare @s varchar(100),@sql varchar(1000) set @s='1,2,3,4,5,6,7,8,9,10' set @sql='select col='''+ replace(@s,',''' union all select ''')+'''' PRINT @sql exec (@sql) if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN',N'IF',N'TF'))
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_splitSTR]') and xtype in (N'FN',N'TF')) ?INSERT @re SELECT SUBSTRING(@s,ID,@s+@split,ID)-ID) GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tb_splitSTR]') and objectproperty(id,N'IsUserTable')=1) drop table [dbo].[tb_splitSTR] --方法3:使用永久性分拆辅助表法 --字符串分拆辅助表 SELECT TOP 8000 ID=IDENTITY(int,1) INTO dbo.tb_splitSTR FROM syscolumns a,syscolumns b --字符串分拆处理函数 CREATE FUNCTION f_splitSTR( @s???? varchar(8000),? --待分拆的字符串 @split? varchar(10)???? --数据分隔符 )RETURNS TABLE AS RETURN( ?SELECT col=CAST(SUBSTRING(@s,ID)-ID) as varchar(100)) ?FROM tb_splitSTR ?WHERE ID<=LEN(@s+'a')? ??AND CHARINDEX(@split,ID)=ID) GO
--方法4:利用sql server2005的OUTER APPLY CREATE FUNCTION [dbo].[ufn_SplitStringToTable] 备注说明: 方法4必须在sql server2005下才可以运行 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SQL Server 错误602,未能在sysindexes中找到数据库 的解决办
- sql-server – 如何在非区分大小写的字段上执行精确的字符串
- Reporting Service电子邮件订阅
- SQLServer 中dm_os_ring_buffers(ring_buffer_connectivity
- Sqlserver2005在安装过程中,提示“ [Microsoft][SQL Nativ
- SqlServer2000安装程序检测出uninstallshield正在使用中,请
- sql-server-2008 – SSRS格式日期从YYYYMMDD到MM / DD / YY
- 如何根据T-SQL中前几个月的数据确定缺失月份的值
- 数据仓库和数据库的实现差异
- sql – 如何将行转移到列中(自定义透视)