SQL SERVER 2008使用CTE转换string到Table
发布时间:2020-12-12 12:39:09 所属栏目:MsSql教程 来源:网络整理
导读:多少次我们会面临这样的问题:我们需要把一组ID的Array做为参数传给存储过程.在存储过程中能转换成Table后我们会更喜欢使用这种数据. 这里我们使用CTE来实现,例如我们有这样的字符串:'1,2,4,8',想转成这个table: T-sql: SET ANSI_NULLS ON GO SET QUOTED_
多少次我们会面临这样的问题:我们需要把一组ID的Array做为参数传给存储过程.在存储过程中能转换成Table后我们会更喜欢使用这种数据. 这里我们使用CTE来实现,例如我们有这样的字符串:'1,2,4,8',想转成这个table: T-sql: SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Amit Gaur -- Create date: July 25th 2008 -- Description: Convert a string to a table -- ============================================= CREATE FUNCTION [dbo].[strToTable] ( @array varchar(max), @del char(1) ) RETURNS @listTable TABLE ( item int ) AS BEGIN WITH rep (item,list) AS ( SELECT SUBSTRING(@array,1,CHARINDEX(@del,@array,1) - 1) as item, SUBSTRING(@array,1) + 1,LEN(@array)) + @del list UNION ALL SELECT SUBSTRING(list,list, SUBSTRING(list,LEN(list)) list FROM rep WHERE LEN(rep.list) > 0 ) INSERT INTO @listTable SELECT item FROM rep RETURN END GO 如何调用呢: 1: DECLARE @array VARCHAR(max) 完了,实际以前你可以用function递归来实现,这里我们使用CTE.希望这篇POST对您有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQL:如何获得每个数据库或小时或……的执行查询数?
- sql-server – 用于在sql server中查找数据库瓶颈的工具
- sql-server – 可以在没有XA的事务中拥有两个MSSQL持久性单
- 整理下自己使用的sqlserver DBA面试题
- sql-server – 如何在SQL Server中使用Switch
- sql – 无法理解隐式地如何将值转换为日期格式
- 数据库 – 如何在Grails中修改域类?
- SQL Server数据库分页存储过程代码
- sql-server – 具有多个数据库服务器的ServiceStack OrmLit
- sql-server – 是否可以在SQL Server中查看LRU-K值?