sqlserver几个好用的表值函数和标量函数
获取逗号风格的字符串中的某一个
比如'1,2,4,5,6' 第三个就是4
- CREATE function [dbo].[Get_StrArrayStrOfIndex]
- (
- @str nvarchar(max), --要分割的字符串
- @split varchar(10), --分隔符号
- @index int --取第几个元素
- )
- returns varchar(1024)
- as
- begin
- declare @location int
- declare @start int
- declare @next int
- declare @seed int
- set @str=ltrim(rtrim(@str))
- set @start=1
- set @next=1
- set @seed=len(@split)
- set @location=charindex(@split,@str)
- while @location<>0 and @index>@next
- begin
- set @start=@location+@seed
- set @location=charindex(@split,@str,@start)
- set @next=@next+1
- end
- if @location =0 select @location =len(@str)+1
- --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
- return substring(@str,@start,@location-@start)
- end
- GO
获取逗号分隔的字符串的个数
- CREATE function [dbo].[Get_StrArrayLength]
- (
- @str nvarchar(max), --要分割的字符串
- @split varchar(10) --分隔符号
- )
- returns int
- as
- begin
- declare @location int
- declare @start int
- declare @length int
- set @str=ltrim(rtrim(@str))
- set @location=charindex(@split,@str)
- set @length=1
- while @location<>0
- begin
- set @start=@location+1
- set @location=charindex(@split,@str,@start)
- set @length=@length+1
- end
- return @length
- end
- GO
按照某个符号分割字符串 翻来一张表
- CREATE FUNCTION [dbo].[SplitStringToTable]
- (
- @String nvarchar(4000), --格式如:“1,2,3,4,”
- @SplitChar nvarchar(10) --分割的字符:“,”
- )
- RETURNS @table Table(ID varchar(100))
- AS
- BEGIN
- DECLARE @Index INT
- SET @Index = 0
- IF @String <> ''
- Begin
- IF RIGHT(@String,1)<> @SplitChar
- SET @String = @String + @SplitChar
- IF LEFT(@String,1)= @SplitChar
- SET @String = STUFF(@String, 1, 1, '')
- End
- WHILE CHARINDEX(@SplitChar,@String,@Index) > 0
- BEGIN
- INSERT INTO @table(ID)
- VALUES (SUBSTRING(@String, @Index, CHARINDEX(@SplitChar, @String,
- @Index) - @Index))
- SET @index = CHARINDEX(@SplitChar, @String, @Index) + 1 END
- RETURN
- END
- GO
sqlserver几个好用的表值函数和标量函数的更多相关文章
- UDF_表值函数与标量函数的区别_分割字符串成单个的字符并返回表(插入到表中)
UDF_区别_分割字符串成单个的字符并返回表(插入到表中) /* SQL表值函数和标量值函数的区别 实验环境:SQL Server 2014,参考maomao365有改编 在sqlserver中存储过 ...
- 转载——CLR标量函数、表值函数和聚合函数(UDA)
本节主要介绍使用CLR创建标量函数,表值函数和聚合函数. 所谓标量函数指的就是此函数只返回一个值.表值函数返回值是一个表.聚合函数是在select语句中使用的,用来聚合一个结果集,类似于Sum()或是 ...
- SQL 表值函数/标量函数
表值函数 定义表值函数 --定义表值函数 CREATE FUNCTION GetStuScore(@Stu_ID INT ) RETURNS TABLE AS RETURN (SELECT ),[St ...
- SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题
用户定义函数(UDF)分类 SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...
- T-SQL编程 —— 用户自定义函数(标量函数)
用户自定义函数 在使用SQL server的时候,除了其内置的函数之外,还允许用户根据需要自己定义函数.根据用户定义函数返回值的类型,可以将用户定义的函数分为三个类别: 返回值为可更新表的函数 如果用 ...
- SQL Server 性能优化之——T-SQL TVF和标量函数
阅读导航 1. TVF(表-值行数Table-Valued Functions) a. 创建TVF b. 使用TVF的低性能T-SQL c. 使用临时表 ...
- Presto 标量函数注册和调用过程简述
在Presto 函数开发一文中已经介绍过如何进行函数开发,本文主要讲述标量函数(Scalar Function)实现之后,是如何在Presto内部进行注册和被调用的.主要讲述标量函数是因为:三类函数的 ...
- sqlserver中的表值函数和标量值函数
顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型.对于内联表值函数,没有函数主体:表是单个 SELECT 语句的结果集. 以下示例创建 ...
- sqlserver自定义函数(标量值函数,表值函数)
用户自定义的函数有两类:表值函数.标量值函数. 表值函数:返回值是数据表的函数 调用方式 select b.* from tableA a accross apply Fun_BiaoZhiFun ...
随机推荐
- 初识EntityFramework6【转】
http://www.cnblogs.com/wujingtao/p/5401132.html 什么是EF? EF是一种ORM(Object-relational mapping)框架,它能把我们在编 ...
- siamese网络&&tripletnet
siamese网络 - 之前记录过: https://www.cnblogs.com/ranjiewen/articles/7736089.html - 原始的siamese network: 输入一 ...
- First Missing Positive leetcode java
题目: Given an unsorted integer array, find the first missing positive integer. For example, Given [1, ...
- 斯坦福大学CS224d课程目录
https://www.zybuluo.com/hanxiaoyang/note/404582 Lecture 1:自然语言入门与次嵌入 1.1 Intro to NLP and Deep Learn ...
- 文档的js
/* 主站,子频道,定向站点共用 */ (function() { scrollToAnchor(); toggleSearchForm(); scrollTop(); initScrollBar() ...
- Android 演示 DownloadManager——Android 下载 apk 包并安装
本文内容 环境 项目结构 演示下载 参考资料 本文是 github 上 Trinea-Android-common 和 Trinea-Android-Demo 项目的一部分,将下载部分分离出来,看看如 ...
- 异步 JS: Callbacks, Listeners, Control Flow Libs 和 Promises【转载+翻译+整理】
http://sporto.github.io/blog/2012/12/09/callbacks-listeners-promises/ 或 http://www.ruanyifeng.com/bl ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- MyBatis - (一) 基本数据操作命令和简单映射
1. 简单的select映射 <mapper namespace="com.mybatis3.mappers.StudentMapper"> <select id ...
- php 字符串中的\n换行符无效、不能换行的解决方法
php 字符串中的\n换行符无效.不能换行的解决方法 程序的中的换行符\n会直接输出,无法正确换行,解决方法是把单引号改为双引号 aa