SQL创建字段信息(表值函数)
ALTER FUNCTION [dbo].[fnt_SplitString]
(
@p1 varchar(Max),
@p3 varchar(255)
)
RETURNS
@Table_Var TABLE
(
c1 varchar(max)
)
AS
BEGIN
declare @p2 varchar(max)
set @p2=rtrim(ltrim(@p1))
declare @pos1 int
declare @pos2 int
set @pos1=1
set @pos2=1
while (@pos1<len(@p2))
begin
set @pos1=charindex(@p3,@p2)
if (@pos1=0)
begin
insert into @table_var values(@p2)
set @pos1=len(@p2)
end
else
begin
insert into @table_var values(left(@p2,@pos1-1))
set @p2=right(@p2,len(@p2)-@pos1)
set @pos1=0
end
end
RETURN
END '调用方式
Select C1,(Row_Number() Over(Order By @@Cursor_Rows)) As C2 From dbo.Fnt_SplitString('ID,WBS,Quantity,MPSNO,Attribute,FileContent,MaterielName,MaterielCode,ExportAccount',',')
方法二:
1 ALTER function [dbo].[SplitString]
(
@Input nvarchar(max),
@Separator nvarchar(max)=',',
@RemoveEmptyEntries bit=
)
returns @TABLE table
(
[Id] int identity(,),
[Value] nvarchar(max)
)
as
begin
declare @Index int, @Entry nvarchar(max)
set @Index = charindex(@Separator,@Input) while (@Index>)
begin
set @Entry=ltrim(rtrim(substring(@Input, , @Index-))) if (@RemoveEmptyEntries=) or (@RemoveEmptyEntries= and @Entry<>'')
begin
insert into @TABLE([Value]) Values(@Entry)
end set @Input = substring(@Input, @Index+datalength(@Separator)/, len(@Input))
set @Index = charindex(@Separator, @Input)
end set @Entry=ltrim(rtrim(@Input))
if (@RemoveEmptyEntries=) or (@RemoveEmptyEntries= and @Entry<>'')
begin
insert into @TABLE([Value]) Values(@Entry)
end return
end Select * From [dbo].[SplitString]('ID,WBS,Quantity,MPSNO,Attribute,FileContent,MaterielName,MaterielCode,ExportAccount',',',)
SQL创建字段信息(表值函数)的更多相关文章
- SQL Server中使用表值函数
函数有很多限制,不能使用动态语句,不能使用临时表等等...细看一下,直接写语句就行了,不用动态语句 insert into @re select id,parid,@I from videoclass ...
- sql server 中的表值函数和标量值函数
顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型.对于内联表值函数,没有函数主体:表是单个 SELECT 语句的结果集. 以下示例 ...
- sql server 创建内联表值函数
表值函数就是返回table 的函数使用它可以方便的进行查询的处理 创建的代码如下: create FUNCTION returunclassfirstlist( -- Add the paramet ...
- 有遍历struct中字段信息的函数或方法
例:struct a{int a;char b[10];double c;}; 在程序中只知道一个结构 a 的指针, 有没有函数能通过结构的名字 和 指向结构的指针 随次得到 结构中的变量类型 和 变 ...
- SQL 创建随机时间的函数
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER function [dbo].[fn_Randtime] ( @begin_date datet ...
- sql 表值函数与标量值函数
写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的,区别是表值函数只能返回一个表,标量 ...
- SQL Server进阶(六)表表达式--派生表、公用表表达式(CTE)、视图和内联表值函数
概述 表表达式是一种命名的查询表达式,代表一个有效地关系表.可以像其他表一样,在数据处理中使用表表达式. SQL Server支持四种类型的表表达式:派生表,公用表表达式,视图和内联表值函数. 为什么 ...
- SQL Server 表表达式--派生表、公用表表达式(CTE)、视图和内联表值函数
概述 表表达式是一种命名的查询表达式,代表一个有效地关系表.可以像其他表一样,在数据处理中使用表表达式. SQL Server支持四种类型的表表达式:派生表,公用表表达式,视图和内联表值函数. 为什么 ...
- sql中的表值函数与标量值函数区别与用法
通俗来讲: 听名字就知道区别了 表值函数返回的是一张表结果,就和一个select查询语句一样,只不过里面带入了参数或者很复杂:标量值函数返回的只是一个值 一 .表值函数又分为内联函数与多语句函数 (1 ...
随机推荐
- iOS聊天下拉刷新聊天记录的实现
1. 想法 最近在开发一个社交类app,要实现类似微信那种下拉刷新聊天记录的功能. 一般有两种实现方式: 1. 直接fetch一个entity的所有数据然后在内存中做filter,就是把所有聊天记录先 ...
- 了解EF CodeFirst的Migrator功能与Migrator.Net对比
在上一篇[数据库迁移利器:Migrator.Net]中,很多朋友提到了EF的CodeFirst也有数据库的迁移功能,说来真惭愧,玩了那么多年,至今还未去了解EF,今天来了解下CodeFirst然后与M ...
- UI: 多窗口
1.自定义帮助类,用于简化 SecondaryView 的管理UI/MultipleViews/SecondaryViewHelper.cs /* * SecondaryViewHelper - 自定 ...
- JavaScript数组的方法
push() :将参数加载到数组的最后,返回数组的长度 pop() :删除数组的最后一个元素,返回删除的值 shift() :删除数组的第一个元素,返回删除的值 unshift ...
- 关于svg格式图片颜色更改
利用 style="fill:#8a8acb" 放在path标签下面. 技巧:比如一个svg是一个圆圈内包含一个问号,问号内填充白色,圆圈内,问号外,填充其他颜色,如蓝色.可 设置 ...
- Ruby升级的最新方法
今天安装cocoapods时候出现了下面的提示Error installing pods:active support requires Ruby version >= 2.2.0这个需求的意思 ...
- MongoDB高可用复制集分片集群搭建
1 逻辑架构 1.1 逻辑架构图 1.2 组件说明 一.mongos(query routers):查询路由,负责client的连接,并把任务分给shards,然后收集结果.一 ...
- miniui前台无法显示数据
坑爹,刚开始使用miniui重写对账单的功能,显示数据的时候明明已经获取到json数据了,但前台还是显示不出来,找了一上午的原因,终于找到是因为前台显示字段的field值要改成和json中(数据库字段 ...
- 单元测试与Moq
这个篇幅里面,记录单元测试与Moq模拟包的知识点. 单元测试 每一个模块,都应该有对应的单元测试.单元测试可以保证你的代码准确性,大大减少出现BUG的几率.一个好的单元测试,也是重构代码必不可少的部分 ...
- js日期格式转换
var mydate=new Date(); var year=mydate.getFullYear(); //获取四位数getYear() 获取两位 var month=mydate.getMont ...