遇到这样一个问题,存储在数据库的数据是一串字符串如:1,2,3,4,5,6。想把这串字符串进行转变成一个表格,如下:

1
2
3
4
5
6

就是这样一个问题,有人同事,写了一个这样的封装函数,这样就方便多了,使用方法如下:

DECLARE @IdString nvarchar(max)
Select @IdString=FMenu from dbo.T_Groups where Fgroupsid=1
DECLARE @tTable TABLE ( tId int )
INSERT @tTable ( tId ) select Item from dbo.Func_Splitstring(@IdString,',')

字符串分割函数:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go ALTER FUNCTION [dbo].[Func_Splitstring]
(
@IdList NVARCHAR(MAX),--传进来的Id列表
@split VARCHAR(10) --分隔符号
)
--返回的临时表@table,以及字段Item
RETURNS @table TABLE ( Item INT )
AS
BEGIN
DECLARE @i INT
DECLARE @j INT SET @i = 1
SET @j = 1 WHILE(@i > 0)
BEGIN
SET @i = CHARINDEX(@split, @IdList, @j)
IF(@i>0)
BEGIN
INSERT @table ( Item ) VALUES ( SUBSTRING(@IdList, @j, @i - @j))
END
ELSE
BEGIN
INSERT @table ( Item ) VALUES (SUBSTRING(@IdList, @j, LEN(@IdList) - @j + 1))
END
SET @j = @i + 1
END
RETURN
END

附:

CHARINDEX 函数
返回字符或者字符串在另一个字符串中的起始位置。
CHARINDEX 函数调用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1 是要到 expression2 中寻找的字符中,start_location 是 CHARINDEX 函数开始在 expression2 中找expression1 的位置。
CHARINDEX 函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如 CHARINDEX 没有找到要找的字符串,那么函数整数“0”。

MSSQLSERVER数据库- 字符串分割函数返回类型表的更多相关文章

  1. 从标准输入读取一行数组并保存(用的是字符串分割函数strtok_s() )

    首先介绍字符串分割函数: char *strtok_s( char *strToken, //字符串包含一个标记或一个以上的标记. const char *strDelimit, //分隔符的设置 c ...

  2. hive函数 -- split 字符串分割函数

    hive字符串分割函数 split(str, regex) - Splits str around occurances that match regexTime taken: 0.769 secon ...

  3. SQL点滴3—一个简单的字符串分割函数

    原文:SQL点滴3-一个简单的字符串分割函数 偶然在电脑里看到以前保存的这个函数,是将一个单独字符串切分成一组字符串,这里分隔符是英文逗号“,”  遇到其他情况只要稍加修改就好了 CREATE FUN ...

  4. vector作为函数返回类型

    在实际的操作中,我们经常会碰到需要返回一序列字符串或者一列数字的时候,以前会用到数组来保存这列的字符串或者数字,现在我们可以用vector来保存这些数据.但是当数据量很大的时候使用vector效率就比 ...

  5. Delphi 自带的字符串分割函数split

    下面介绍Delphi自带的字符串分割函数,根据你的需要来使用. 1.ExtractStrings function ExtractStrings(Separators, WhiteSpace: TSy ...

  6. JavaScript中字符串分割函数split用法实例

    这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaSc ...

  7. c/c++: c++函数返回类型什么情况带const

    c++ 函数的返回类型,包括const 什么时候起作用呢? 函数返回值不想其立即修改的. 例子如下,这是一个简单的避免产生隐形返回变量的方法,abc 的函数返回是引用,main函数中第10行,++ 操 ...

  8. Split字符串分割函数

    非常非常常用的一个函数Split字符串分割函数. Dim myTest myTest = "aaa/bbb/ccc/ddd/eee/fff/ggg" Dim arrTest arr ...

  9. ASP.NET中常用的字符串分割函数

    asp.net字符串分割函数用法 先来看个简单的实例 但是其数组长度却是25,而不是3.下面这种方法是先将“[111cn.net]”替换成一个特殊字符,比如$,在根据这个字符执行Split 例如下面我 ...

随机推荐

  1. shell学习总结之自定义函数

    shell学习总结之自定义函数 Myfun (){ echo -n "now i is $i " ! [ "$i" ] && exit ; ec ...

  2. tomcat+apache 实现负载均衡之一:同一台电脑部署2个以上tomcat

    1.  下载tomcat 8.0.17 http://apache.fayea.com/tomcat/tomcat-8/v8.0.17/bin/apache-tomcat-8.0.17.tar.gz ...

  3. BT5之网络配置

    输入ifconfig命令,可以查看当前IP地址设置情况.查看路由表的命令(用来检查默认网关是否设置正确):netstat -r 一.让BT5自动获取IP地址 自动获取IP地址,使用dhclient命令 ...

  4. AT&T 和 Intel 汇编语法的主要区别

    转自AT&T 和 Intel 汇编语法的主要区别 作为一个爱折腾的大好青年,补番之余还要补一些 Linux 下的基础,比如 GDB 的正确使用方法.但无论是看 gdb 还是 gcc -S 里的 ...

  5. Codeforces 258 Div2

    A题,n*m根木棍,相交放置,轮流取走相交的两根,最后谁不能行动,则输掉. min(n,m)&1 为1则先取者赢. B题,给定一个长度为n,且各不相同的数组,问能否通过交换连续一段L....R ...

  6. 《sql注入攻击与防御 第2版》的总结 之 如何确定有sql注入漏洞

    看完<sql注入攻击与防御 第2版>后,发现原来自己也能黑网站了,就一个字:太爽了. 简单总结一下入侵步骤: 1.确定是否有sql注入漏洞 2.确定数据库类型 3.组合sql语句,实施渗透 ...

  7. Python Anaconda2 (64-bit) 安装后启动jupyter-notebook默认目录更改

    看了网上很多关于更改 python notebook的,好麻烦,所以想了一招. python notebook 现在改名叫 jupyter-notebook ,被集成在Anaconda中. Anaco ...

  8. Drawable(3)Color State List Resource

    注意 Color State List Resource 与 Color不同,前者是颜色状态表.根据不同状态显示不同颜色,它是State list,里面有多种颜色,后者只是一个颜色. Color St ...

  9. phpcms 2008 /preview.php SQL注入漏洞

    漏洞版本: phpcms 2008 漏洞描述: phpcms2008 是一款基于 PHP+Mysql 架构的网站内容管理系统,也是一个开源的 PHP 开发平台. phpcms 2008的preview ...

  10. apache开源项目--CouchDB

    Apache CouchDB 是一个面向文档的数据库管理系统.它提供以 JSON 作为数据格式的 REST 接口来对其进行操作,并可以通过视图来操纵文档的组织和呈现. CouchDB 是 Apache ...