获取逗号风格的字符串中的某一个

比如'1,2,4,5,6' 第三个就是4

  1. CREATE function [dbo].[Get_StrArrayStrOfIndex]
  2. (
  3. @str nvarchar(max), --要分割的字符串
  4. @split varchar(10), --分隔符号
  5. @index int --取第几个元素
  6. )
  7. returns varchar(1024)
  8. as
  9. begin
  10. declare @location int
  11. declare @start int
  12. declare @next int
  13. declare @seed int
  14.  
  15. set @str=ltrim(rtrim(@str))
  16. set @start=1
  17. set @next=1
  18. set @seed=len(@split)
  19.  
  20. set @location=charindex(@split,@str)
  21. while @location<>0 and @index>@next
  22. begin
  23. set @start=@location+@seed
  24. set @location=charindex(@split,@str,@start)
  25. set @next=@next+1
  26. end
  27. if @location =0 select @location =len(@str)+1
  28. --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location0,那默认为字符串后边有一个分隔符号。
  29.  
  30. return substring(@str,@start,@location-@start)
  31. end
  32. GO

获取逗号分隔的字符串的个数

  1. CREATE function [dbo].[Get_StrArrayLength]
  2. (
  3. @str nvarchar(max), --要分割的字符串
  4. @split varchar(10) --分隔符号
  5. )
  6. returns int
  7. as
  8. begin
  9. declare @location int
  10. declare @start int
  11. declare @length int
  12.  
  13. set @str=ltrim(rtrim(@str))
  14. set @location=charindex(@split,@str)
  15. set @length=1
  16. while @location<>0
  17. begin
  18. set @start=@location+1
  19. set @location=charindex(@split,@str,@start)
  20. set @length=@length+1
  21. end
  22. return @length
  23. end
  24.  
  25. GO

按照某个符号分割字符串 翻来一张表

  1. CREATE FUNCTION [dbo].[SplitStringToTable]
  2. (
  3. @String nvarchar(4000), --格式如:“1234,”
  4. @SplitChar nvarchar(10) --分割的字符:“,”
  5. )
  6. RETURNS @table Table(ID varchar(100))
  7. AS
  8. BEGIN
  9. DECLARE @Index INT
  10. SET @Index = 0
  11.  
  12. IF @String <> ''
  13. Begin
  14. IF RIGHT(@String,1)<> @SplitChar
  15. SET @String = @String + @SplitChar
  16. IF LEFT(@String,1)= @SplitChar
  17. SET @String = STUFF(@String, 1, 1, '')
  18. End
  19.  
  20. WHILE CHARINDEX(@SplitChar,@String,@Index) > 0
  21. BEGIN
  22. INSERT INTO @table(ID)
  23. VALUES (SUBSTRING(@String, @Index, CHARINDEX(@SplitChar, @String,
  24. @Index) - @Index))
  25. SET @index = CHARINDEX(@SplitChar, @String, @Index) + 1 END
  26. RETURN
  27. END
  28. GO

sqlserver几个好用的表值函数和标量函数的更多相关文章

  1. UDF_表值函数与标量函数的区别_分割字符串成单个的字符并返回表(插入到表中)

    UDF_区别_分割字符串成单个的字符并返回表(插入到表中) /* SQL表值函数和标量值函数的区别 实验环境:SQL Server 2014,参考maomao365有改编 在sqlserver中存储过 ...

  2. 转载——CLR标量函数、表值函数和聚合函数(UDA)

    本节主要介绍使用CLR创建标量函数,表值函数和聚合函数. 所谓标量函数指的就是此函数只返回一个值.表值函数返回值是一个表.聚合函数是在select语句中使用的,用来聚合一个结果集,类似于Sum()或是 ...

  3. SQL 表值函数/标量函数

    表值函数 定义表值函数 --定义表值函数 CREATE FUNCTION GetStuScore(@Stu_ID INT ) RETURNS TABLE AS RETURN (SELECT ),[St ...

  4. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

    用户定义函数(UDF)分类  SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...

  5. T-SQL编程 —— 用户自定义函数(标量函数)

    用户自定义函数 在使用SQL server的时候,除了其内置的函数之外,还允许用户根据需要自己定义函数.根据用户定义函数返回值的类型,可以将用户定义的函数分为三个类别: 返回值为可更新表的函数 如果用 ...

  6. SQL Server 性能优化之——T-SQL TVF和标量函数

    阅读导航 1. TVF(表-值行数Table-Valued Functions)         a. 创建TVF         b. 使用TVF的低性能T-SQL         c. 使用临时表 ...

  7. Presto 标量函数注册和调用过程简述

    在Presto 函数开发一文中已经介绍过如何进行函数开发,本文主要讲述标量函数(Scalar Function)实现之后,是如何在Presto内部进行注册和被调用的.主要讲述标量函数是因为:三类函数的 ...

  8. sqlserver中的表值函数和标量值函数

    顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型.对于内联表值函数,没有函数主体:表是单个 SELECT 语句的结果集. 以下示例创建 ...

  9. sqlserver自定义函数(标量值函数,表值函数)

    用户自定义的函数有两类:表值函数.标量值函数. 表值函数:返回值是数据表的函数 调用方式 select  b.*  from tableA a accross apply Fun_BiaoZhiFun ...

随机推荐

  1. 初识EntityFramework6【转】

    http://www.cnblogs.com/wujingtao/p/5401132.html 什么是EF? EF是一种ORM(Object-relational mapping)框架,它能把我们在编 ...

  2. siamese网络&&tripletnet

    siamese网络 - 之前记录过: https://www.cnblogs.com/ranjiewen/articles/7736089.html - 原始的siamese network: 输入一 ...

  3. First Missing Positive leetcode java

    题目: Given an unsorted integer array, find the first missing positive integer. For example, Given [1, ...

  4. 斯坦福大学CS224d课程目录

    https://www.zybuluo.com/hanxiaoyang/note/404582 Lecture 1:自然语言入门与次嵌入 1.1 Intro to NLP and Deep Learn ...

  5. 文档的js

    /* 主站,子频道,定向站点共用 */ (function() { scrollToAnchor(); toggleSearchForm(); scrollTop(); initScrollBar() ...

  6. Android 演示 DownloadManager——Android 下载 apk 包并安装

    本文内容 环境 项目结构 演示下载 参考资料 本文是 github 上 Trinea-Android-common 和 Trinea-Android-Demo 项目的一部分,将下载部分分离出来,看看如 ...

  7. 异步 JS: Callbacks, Listeners, Control Flow Libs 和 Promises【转载+翻译+整理】

    http://sporto.github.io/blog/2012/12/09/callbacks-listeners-promises/ 或 http://www.ruanyifeng.com/bl ...

  8. 【POJ 3071】 Football(DP)

    [POJ 3071] Football(DP) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4350   Accepted ...

  9. MyBatis - (一) 基本数据操作命令和简单映射

    1. 简单的select映射 <mapper namespace="com.mybatis3.mappers.StudentMapper"> <select id ...

  10. php 字符串中的\n换行符无效、不能换行的解决方法

    php 字符串中的\n换行符无效.不能换行的解决方法 程序的中的换行符\n会直接输出,无法正确换行,解决方法是把单引号改为双引号 aa