CREATE  FUNCTION [dbo].[fnQuerySplit]
(
@string VARCHAR(MAX) ,--待分割字符串
@separator VARCHAR(255)--分割符
)
RETURNS @array TABLE ( item VARCHAR(255) )
AS
BEGIN
DECLARE @begin INT ,
@end INT ,
@item VARCHAR(255);
SET @begin = 1;
SET @end = CHARINDEX(@separator, @string, @begin);
WHILE ( @end <> 0 )
BEGIN
SET @item = SUBSTRING(@string, @begin, @end - @begin);
INSERT INTO @array
( item )
VALUES ( @item );
SET @begin = @end + 1;
SET @end = CHARINDEX(@separator, @string, @begin);
END;
SET @item = SUBSTRING(@string, @begin, LEN(@string) + 1 - @begin);
IF ( LEN(@item) > 0 )
INSERT INTO @array
( item
)
VALUES ( SUBSTRING(@string, @begin, LEN(@string) + 1 - @begin)
);
RETURN;
END;
CREATE  FUNCTION [dbo].[Fun_String2Table]
(
@str NVARCHAR(MAX) ,
@split NVARCHAR(10)
)
RETURNS @table TABLE ( [item] NVARCHAR(MAX) )
AS
BEGIN
IF LEN(@split) = 0
BEGIN
SET @split = N',';
END; DECLARE @xml XML;
SET @xml = CONVERT(XML, '<x><![CDATA['
+ REPLACE(CONVERT(VARCHAR(MAX), @str), @split,
']]></x><x><![CDATA[') + ']]></x>'); INSERT INTO @table
SELECT item
FROM ( SELECT c.value('text()[1]', 'nvarchar(4000)') [item]
FROM @xml.nodes('/x') t ( c )
) t
WHERE item IS NOT NULL; RETURN;
END;
CREATE FUNCTION [dbo].[f_split]
(
@SourceSql NVARCHAR(MAX) ,
@StrSeprate NVARCHAR(10)
)
RETURNS @temp TABLE ( value NVARCHAR(100) )
AS
BEGIN
DECLARE @i INT;
SET @SourceSql = RTRIM(LTRIM(@SourceSql));
SET @i = CHARINDEX(@StrSeprate, @SourceSql);
WHILE @i >= 1
BEGIN
INSERT @temp
VALUES ( LEFT(@SourceSql, @i - 1) );
SET @SourceSql = SUBSTRING(@SourceSql, @i + 1,
LEN(@SourceSql) - @i);
SET @i = CHARINDEX(@StrSeprate, @SourceSql);
END;
IF @SourceSql <> '\'
INSERT @temp
VALUES ( @SourceSql );
RETURN;
END;
fnQuerySplit:


Fun_String2Table:

f_split:

因为每次执行都是不一样的时间,所以综合下来,

Fun_String2Table 是最快的
												

sqlserver 拼接字符串分割的更多相关文章

  1. sqlserver 自定义字符串分割函数.

    --SQL Server Split函数 --Author: sq --说明:被分割后的字段为:short_str --支持分割符多字节 --使用方法 --Select * FROM splits(' ...

  2. sqlserver 拼接字符串

    SELECT CAST(USER_ID AS VARCHAR) + ',' FROM dbo.AUTH_USER FOR XML PATH('');

  3. SQLServer实现split分割字符串到列

    网上已有人实现sqlserver的split函数可将字符串分割成行,但是我们习惯了split返回数组或者列表,因此这里对其做一些改动,最终实现也许不尽如意,但是也能解决一些问题. 先贴上某大牛写的sp ...

  4. iOS开发-- 字符串分割、拼接

    ---------------------字符串分割实例---------------------NSString * ptr = @"I am a man"; //将字符串整体作 ...

  5. Obj-C数组以及字符串拼接与分割

    本文转载至 http://mobile.51cto.com/iphone-392148.htm Obj-C只是增加了一点“特殊语料”的C语言,所以可以用printf()代替NSLog().但我们建议使 ...

  6. java以逗号为分割符拼接字符串的技巧

    java以逗号为分割符拼接字符串的技巧   答: 不用那么多if判断,让人思维混乱,直接到最后使用deleteCharAt方法去除最后一个逗号即可. 实现代码如下所示: StringBuffer sb ...

  7. NSString用法,object-C数组以及字符串拼接和分割

    一.介绍使用NSString创建一个字符串的代码如下: #import <Foundation/Foundation.h>int main (int argc, char *argv[]) ...

  8. mysql 字符串分割 和 动态执行拼接sql

    本人以前主要用的是MSSQL,最近项目在使用MYSQL,自己是一个 典型的小白.今天就记录一下 一个mysql存储过程,里面需要分割字符串和 动态执行sql语句. 关于字符串 分割我开始使用 LOCA ...

  9. 工作中用到的oracle字符串分割整理

    oracle部分: 定义类型(用于字符串分割): create or replace TYPE "STR_SPLIT" IS TABLE OF VARCHAR2 (4000); 字 ...

随机推荐

  1. Nginx负载均衡中4层代理和7层代理对比

    1.4层代理和7层代理什么意思? 这里的层是OSI 7层网络模型,OSI 模型是从上往下的,越底层越接近硬件,越往上越接近软件,这七层模型分别是物理层.数据链路层.网络层.传输层.会话层.表示层.应用 ...

  2. [转载]C# MemoryStream(内存流)

    MemoryStream位于System.IO命名空间,为系统内存提供流式的读写操作.常作为其他流数据交换时的中间对象操作. 1.MemoryStream类封装一个字节数组,在构造实例时可以使用一个字 ...

  3. C语言程序设计II—第十二周教学

    第十二周教学总结(13/5-19/5) 教学内容 本周的教学内容为:11.1 知识点:指针数组的概念.11.2 知识点:函数指针.11.3知识点:单链表的基本概念,链表节点的结构定义方法,以及单向链表 ...

  4. Appium 基于控件左滑操作

    def swipe_ele_left(self, ele, dur=800): """ 基于控件元素左滑操作 :param ele: 控件元素 :param dur: 在 ...

  5. linux下jar命令(运行jar包)

    直接用java -jar xxx.jar,当退出或关闭shell时,程序就会停止掉.   普通方式启动应用: java -jar jarPackageName.jar 1>system.log ...

  6. C++:盾神与条状项链

    实现代码如下: #include<cstdlib> #include <string> #include <iostream> using namespace st ...

  7. SAS学习笔记38 SAS Comments注释语句

    通常来讲,注释语句有四种: 1.* message; 2.COMMENT message; 3./* message */ 4.%* message; 第一种的主要限制是注释之中不得有“:”符号.通常 ...

  8. SAS学习笔记22 t检验、卡方检验

  9. 学界 | 华为诺亚方舟实验室提出新型元学习法 Meta-SGD ,在回归与分类任务中表现超群

    学界 | 华为诺亚方舟实验室提出新型元学习法 Meta-SGD ,在回归与分类任务中表现超群 机器之心发表于机器之心订阅 499 广告关闭 11.11 智慧上云 云服务器企业新用户优先购,享双11同等 ...

  10. 谷歌浏览器添加插件时显示程序包无效:"CRX_HEADER_INVALID" 解决办法

    今天在添加谷歌插件的时候,却发现谷歌浏览器显示 程序包无效:"CRX_HEADER_INVALID",现整理解决方法如下: 下图是下载好的 .crx 结尾的插件. 将插件的后缀名改 ...