把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据。

我们日常开发过程中,非常常见的一种需求,

在前面我们介绍了 [原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式,当然按照这种方式转变一下也是可以实现的,但是我这里有以前我一直使用的另外一种方式,也记录一下吧。

依照惯例,我们首先来看看效果。

调用:SELECT Id FROM [Fn_StringSplitToTable](‘1,12,36,65,58,56,DF‘,‘,‘)

具体函数如下:

-- ============================================= 
-- 调用:SELECT Id FROM [Fn_StringSplitToTable](‘1,12,36,65,58,56,DF‘,‘,‘) 
-- Create date: <Create Date,,> 
-- Description:    把用逗号分隔的字符串转换成表格数据 
-- ============================================= 
CREATE FUNCTION [dbo].[Fn_StringSplitToTable] 

    @StringX varchar(MAX), 
    @Split nvarchar(10) 

RETURNS 
@IdsTable TABLE 

    [Id] nvarchar(200) 

AS 
BEGIN 
    DECLARE @Index int 
    DECLARE @LenIndex int 
    SET @LenIndex=LEN(@Split) 
    SET @Index=CHARINDEX(@Split,@StringX,1) 
    WHILE (@Index>=1) 
    BEGIN 
        IF(LEFT(@StringX,@Index-1) <> ‘‘) 
            INSERT INTO @IdsTable SELECT LTRIM(RTRIM(LEFT(@StringX,@Index-1))) 
        SET @StringX=RIGHT(@StringX,LEN(@StringX)[email protected]@LenIndex+1) 
        SET @Index=CHARINDEX(@Split,@StringX,1) 
    END 
    IF(@StringX<>‘‘) INSERT INTO @IdsTable SELECT LTRIM(RTRIM(@StringX)) 
    
    RETURN 
END

以上调用是用逗号隔开,如果您的字符串是用/号隔开,直接修改调用字符串就行了。

-- 调用:SELECT Id FROM [Fn_StringSplitToTable](‘1/12/36/65/58/56/DF‘,‘/‘)

时间: 2024-10-10 23:16:40

把某一个用逗号或者/或者其他符号作为间隔的字符串分隔成一张表数据。的相关文章

一个多余逗号引起的麻烦

问题在IE9以上被隐藏,但是在IE8上,出现EasyUI.mini.js中的错误,竟然是一个多余的逗号引起的 如下: dataTable_OnsiteDelegation.datagrid({ title: '现场登记管理', iconCls: 'icon-save', method: "post", url: '/SampleReceive/LoadOnsiteDelegationjson/', idField: 'ID', sortName: 'ID', sortOrder: 'a

离开不是句号,只是一个小小的逗号

进入6月份了,阳光愈发的毒辣啊~ 最近一直在准备期末考试,有段时间没有更新博客了. 中午,去了4412(ACM实验室), 像往常一样,开机, 将我的资料拷到U盘, 像往常一样,关机. 将桌面上的东西收拾收拾,背起书包,离开. 这次的离开,代表着我的ACM学习,正式的告一段落. 离开的时候, 曾经发生过的事情, 不断在脑海里徘徊. 能想起 SR 天天WA,WA的叫唤, 能想起 FW老师心目中的男神 XH 屌丝的行为, 能想起和 YM 天天晚上在9点50分从钟楼4楼开始关机,然后飞奔到西门,去做最后

Java将一段逗号分割的字符串转换成一个数组

String 类:String 类代表字符串.Java 程序中的所有字符串字面值都作为此类的实例实现.字符串是常量,它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因为 String 对象是不可变的,所以 可以共享.String 类包括的方法可用于检查序列的单个字符.比较字符串.搜索字符串.提取子字符串.创建字符串副本并将所有字符全部转换为大写或小写.Java 语言提供对字符串串联符号("+")以及将其他 对象转换为字符串的特殊支持.字符串串联是通过 StringBuilde

sql用逗号连接多张表对应哪个join?

转自:http://blog.csdn.net/huanghanqian/article/details/52847835 四种join的区别已老生常谈: INNER JOIN(也可简写为JOIN): 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在匹配,就返回行 那么问题来了,还有一种常见的写法是将表用逗号隔开,那这个又是怎么连接的呢.

OrmLite动态创建表,一个实体类创建多张表的的偏招

在做一个Android的项目,因为使用数据库频繁,实体字段也比较多,于是打算采用ORM框架,发现OrmLite还不错,于是下了下来,打算使用. 没想到还没正式开工,就遇到问题了.我现在的一个需求如下, 我有一个实体类如下,代表聊天消息,现在要做的是针对每一个当前用户(userId)对应一个朋友(friendId)都要创建一个表.需求比较蛋疼,我本来想的是直接在加两个字段就搞定的,但是我们老大说要分表.没办法只能分表. public class ChatMessage{ public ChatMe

ACCESS(VBA)上的一个小项目 —— 2、读取ACCESS表数据到TreeView和ListView

有人问我能不能做一个程序的时候,我第一反应都说“能”. --这次在ACCESS中,借助TreeView和ListView做了一个数据联动的模型. 简析过程: 1)从网上找了一份TreeView学习教程<三小时学会树控件>,了解了TreeView的建立以及节点的使用方法: 2)把数据表中的某列按一定规则生成的数据再按一种规则解析成TreeView中的树结构(VPPS): 3)通过遍历TreeView中节点的折叠状态,通过上述一定规则生成的数据(唯一性)把数据表中的内容读取到ListView中:

Java链接HBASE数据库,创建一个表,删除一张表,修改表,输出插入,修改,数据删除,数据获取,显示表信息,过滤查询,分页查询,地理hash

准备工作 1.创建Java的Maven项目 创建好的目录结构如下:  另外注意junit的版本,最好不要太高,最开始笔者使用的junit4.12的,发现运行的时候会报错.最后把Junit的版本改成4.7的之后,问题解决了. 创建测试工具类HbaseDemo,为了保证能够让Hbase运行,需要最开始写出如下配置: package toto.com.hbase; import java.util.ArrayList; import java.util.Iterator; import org.apa

两张表A和B,各有一个字段,更新时间A.MODIFIED_TM和B.MODIFIED_TM,A表为主表,更新时间不为空,但是B表更新时间可能为空,现在要取A、B两表时间最新的那个,B.MODIFIED

问题描述: 两张表A和B,各有一个字段,更新时间A.MODIFIED_TM和B.MODIFIED_TM,A表为主表,更新时间不为空,但是B表更新时间可能为空,现在要取A.B两表时间最新的那个,B.MODIFIED_TM若为空就取A.MODIFIED_TM,例如: 表A ID    MODIFIED_TM 1     2013/3/10 18:07:12 2     2013/4/10 18:07:12 3     2013/5/10 18:07:12 表B ID    MODIFIED_TM 1

Sql Server 导入还有一个数据库中的表数据

在涉及到SQL Server编程或是管理时一定会用到数据的导入与导出, 导入导出的方法有多种,此处以SQL Server导入表数据为例.阐述一下: 1.打开SQL Server Management Studio.在对象资源管理器中,展开"SQL Server 实例"→"数据库"→"你须要导入数据的数据库"节点.单击鼠标右键,选择"任务"→"导出数据"命令. 出现导入和导出向导的欢迎界面,单击"下