拆分字符串的表值函数


 1--拆分字符串的表值函数
 2
 3alter Function f_Split
 4(
 5    @Str Nvarchar(max)
 6)Returns @Re Table
 7(
 8    Id int Identity, Val Nvarchar(max)
 9)
10As
11Begin
12    Declare @Pos Int
13    Set @Pos = CharIndex(N',', @Str)
14    While @Pos > 0
15    Begin
16        Insert @Re Values(Left(@Str, @Pos - 1))
17        Select
18            @Str = Stuff(@Str, 1, @Pos, N''),
19            @Pos = CharIndex(N',', @Str)
20    End
21
22    If @Str > N''
23        Insert @Re(Val) Values(@Str)
24
25    Return
26End
27Go
28
29Select * From dbo.f_Split(N'hh,hello world,hyt')

 

 正好csdn上有人问到相关的东西了,把这个函数稍加改进下


 1set ANSI_NULLS ON
 2set QUOTED_IDENTIFIER ON
 3go
 4
 5Create Function [dbo].[f_Split]
 6(
 7    @Str Nvarchar(max),
 8    @Spliter Nvarchar(2)
 9)Returns @Re Table
10(
11    Id int Identity, Val Nvarchar(max)
12)
13As
14Begin
15    If @Spliter Is Null Or (Len(@Spliter)=0)
16    Begin
17        Set @Spliter = N','
18    End
19
20    Declare @Pos Int
21    Set @Pos = CharIndex(@Spliter, @Str)
22    While @Pos > 0
23    Begin
24        Insert @Re Values(Left(@Str, @Pos - 1))
25        Select
26            @Str = Stuff(@Str, 1, @Pos, N''),
27            @Pos = CharIndex(@Spliter, @Str)
28    End
29
30    If @Str > N''
31        Insert @Re(Val) Values(@Str)
32
33    Return
34End

 

 

 

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 330987132 | Go:217696290 | Python:336880185 | 做人要厚道,转载请注明出处!http://www.cnblogs.com/sunshine-anycall/archive/2009/03/22/1418787.html

时间: 2024-11-02 06:07:50

拆分字符串的表值函数的相关文章

Sql Server实现自定义拆分字符串函数Split()

经常我们要用到批量操作时都会用到字符串的拆分,郁闷的是SQL Server中却没有自带Split函数,所以我们只能自己动手来解决一下.为了减少和数据库的通讯次数,我们都会利用这种方法来实现批量操作.当然有时我们会借助Execute这个方法来实现,利用这个方法有一个不好的地方就是她只认识以","分割的字符串,在传IDs批量操作的时候还是可以达到目的,但是经常我们要用到更复杂的操作时我们就需要自己动手来完成了...... 1.当我们需要传入很长的字符串是我们可以借助NText和Text类型

在SQL Server数据库中拆分字符串函数

SQL Server数据库中拆分字符串函数的具体方法: CREATE FUNCTION uf_StrSplit '1.1.2.50','.' (@origStr varchar(7000), --待拆分的字符串 @markStr varchar(100)) --拆分 标记,如',' RETURNS @splittable table ( str_id varchar(4000) NOT NULL, --编号ID string varchar(2000) NOT NULL --拆分后的字符串 )

MySQL截取和拆分字符串函数用法示例_Mysql

本文实例讲述了MySQL截取和拆分字符串函数用法.分享给大家供大家参考,具体如下: 首先说截取字符串函数: SUBSTRING(commentid,9) 这个很简单,从第9个字符开始截取到最后.SUBSTRING的参数有三个,最后一个是截取的长度,默认是到结尾,负数是倒数第几位. 接着说拆分字符串函数: SUBSTRING_INDEX(commentid, '-', 1) 这个就稍稍复杂一些了,他的意思是以 - 进行拆分字符串,从第一个关键词开始取前面所有的字符串.如果上面的第三个参数修改为 -

java中split拆分字符串函数用法

经常需要用java拆分字符串如1,2,3,4 tom,jim,andy,han 1.语法如下 String.split(sourceStr,maxSplit) String.split(sourceStr) 参数说明:sourceStr是被分割的字符串,maxSplit是最大的分割数 返回值说明:split函数的返回值是一个字符串数组String[] 例子  代码如下 复制代码 package com.java.lang;   public class StringSp {    /**   *

【SQL】sql版Split函数。用于拆分字符串为单列表格

原文:[SQL]sql版Split函数.用于拆分字符串为单列表格 功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移除空格子串和重复项.市面上类似的函数不算少,但大多都是在循环中对原串进行改动,我感觉这样不好,虽然不知道sql的字符串是不是像.net的一样具有不可变性,但感觉尽量不要去动原串最好,万一sql的字串也不可变,那变一次就要产生一份,尤其是每圈循环都在变,内存消耗让人心疼,所以才有重新造个轮子的想

sql server 2005中使用apply对每行调用表值函数

server|函数 使用 APPLY 运算符可以为实现查询操作的外部表表达式返回的每个行调用表值函数.表值函数作为右输入,外部表表达式作为左输入.通过对右输入求值来获得左输入每一行的计算结果,生成的行被组合起来作为最终输出.APPLY 运算符生成的列的列表是左输入中的列集,后跟右输入返回的列的列表. <?XML:NAMESPACE PREFIX = O /> APPLY 有两种形式: CROSS APPLY 和 OUTER APPLY.CROSS APPLY 仅返回外部表中通过表值函数生成结果

在 SQL Server 2005 中使用表值函数来实现空间数据库

server|函数|数据|数据库 Gyorgy Fekete 和 Alex Szalay约翰霍普金丝大学 Jim GrayMicrosoft(联系作者) 适用于Microsoft SQL Server 2005 摘要:本文说明了如何使用 C# 和表值函数将空间搜索函数("邻近点的点"和"多边形内的点")添加到 Microsoft SQL Server 2005.使用此库可以在不编写任何特殊代码的情况下向应用程序中添加空间搜索.此库实现了来自约翰霍普金丝大学的公共域

和表值函数连接引发的性能问题分析

 表值函数     SQL Server中提供了类似其他编程语言的函数,而函数的本质通常是一段代码的封装,并返回值.在SQL Server中,函数除了可以返回简单的数据类型之外(Int.Varchar等),还可以返回一个集合,也就是返回一个表.     而根据是否直接返回集合或是定义后再返回集合,表值函数又分为内联用户定义表值函数和用户定义表值函数(下文统称为表值函数,省去"用户定义"四个字). 内联表值函数     内联表值函数和普通函数并无不同,唯一的区别是返回结果为集合(表),而

表值函数与JS中split()的联系

在公司用云平台做开发就是麻烦 ,做了很多功能或者有些收获,都没办法写博客,结果回家了自己要把大脑里面记住的写出来. split()这个函数我们并不陌生,但是当前台有许多字段然后随意勾选后的这些参数传递到后台做处理的时候却麻烦了,我们这个时候需要把这些当字符串传递到存储过程,在存储过程里面将这些字符串分割成一个个单独的个体,我这里不说数组,是因为存储过程没有数组这一说. 这时候我们就会想到表值函数.表值函数返回的是一个Table类型的表.说到这里我想很多人都想到了,这不就是一个数组形式么?一个表就