SQL批量更新操作[转载]

SQL批量更新操作[转载]

之前有提過一個方式來批量更新DB的資料,就是利用分隔符號把所有資料合併成單一字串,然後傳送此字串給SQL Server去轉換成表格做進階運用,今天就來看一下該如何利用此方式。

首先建立一個方法(Method)把要批量更新的資料組合成一個字串,你可以建立屬於自己的方法,這邊我用下面的範例說明。

0
1
SQL批量更新操作[转载]
public
static
string JoinList<T>(
string delimiter, IEnumerable<T> items, Converter<T,
string> converter)


0
2
SQL批量更新操作[转载]
SQL批量更新操作[转载]

{

03 SQL批量更新操作[转载]    StringBuilder builder = new StringBuilder();
04 SQL批量更新操作[转载]    foreach (T item in items)
05 SQL批量更新操作[转载]SQL批量更新操作[转载]    {

06 SQL批量更新操作[转载]        builder.Append(converter(item));
07 SQL批量更新操作[转载]        builder.Append(delimiter);
08 SQL批量更新操作[转载]    }

09 SQL批量更新操作[转载]    if (builder.Length > 0)
10 SQL批量更新操作[转载]        builder.Length = builder.Length – delimiter.Length;
11 SQL批量更新操作[转载]
12     return builder.ToString();
13 SQL批量更新操作[转载]}

此方法可以接受不同的資料型態然後轉成字串輸出,其使用方法如下:

List<
int> lstCustomerID =
new List<
int> { 1001, 1002, 1003, 1004 };


//使用”,”作為分隔字元,輸入的資料型態為int


SQL批量更新操作[转载]
string strParameter = JoinList<
int>(
“,”, lstCustomerID,
delegate(
int item)

{ return item.ToString(); });

幫然也可以輸入其他的資料型態如下

//一樣建立一個List<Guid>物件


SQL批量更新操作[转载]List<Guid> lstCustomerID =
new List<Guid>

{ guid1, guid2, … };


//使用”,”作為分隔字元,輸入的資料型態為Guid


SQL批量更新操作[转载]
string strParameter = JoinList<Guid>(
“,”, lstCustomerID,
delegate(Guid item)

{ return item.ToString(); });

此字串內容會是這樣

1001,1002,1003,1004

將此字串送入後端的SQL資料庫後,資料庫需要有function把此字串轉成資料表以利運用,下面是一個範例如何將此類字串轉成table。

0
1
CREATE FUNCTION dbo.fxnParseCommaDelmitedList


0
2 (


0
3 @CommaDelimitedList
varchar(8000)


0
4 )


0
5 RETURNS @TableVar
TABLE (ItemID
int
NOT
NULL )


0
6
AS


0
7
BEGIN


0
8  
DECLARE @IDListPosition
int


0
9  
DECLARE @IDList
varchar(4000)


10  
DECLARE @ArrValue
varchar(4000)


11  
SET @IDList =
COALESCE(@CommaDelimitedList,
)


12  
IF @IDList <>



13  
BEGIN


14  
–先在字串最後補上一個’,’


15  
SET @IDList = @IDList +
‘,’


16  
WHILE
PATINDEX(
‘%,%’ , @IDList ) <> 0


17      
BEGIN


18    
SELECT @IDListPosition =
PATINDEX(
‘%,%’ , @IDList)


19    
SELECT @ArrValue =
LEFT(@IDList, @IDListPosition – 1)


20    
–將分割後的數值存入@TableVar


21    
INSERT
INTO @TableVar (ItemID)
VALUES (
CONVERT(
int, @ArrValue))


22    
–將已經處理過的字串移除


23    
SELECT @IDList =
STUFF(@IDList, 1, @IDListPosition,
)


24      
END


25  
END


26  
RETURN


27
END

建立上面這個function並放在Table-Valued的資料夾下即可。

使用方式:

Select *


From dbo.fxnParseCommaDelmitedList(@parameter)

就會得到如下的表格

ItemID
1001
1002
1003
1004

原文:
http://www.dotblogs.com.tw/kennyshu/archive/2009/07/12/9449.aspx

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110690.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ubuntu升级python版本

    ubuntu升级python版本Ubuntu16.04默认安装了Python2.7和3.5请注意,系统自带的python千万不能卸载!输入命令python按Ctrl+D退出python命令行输入命令sudoadd-apt-repositoryppa:jonathonf/python-3.6按Enter确认输入命令sudoapt-getupdate输入命令sudoapt-geti…

    2022年5月28日
    182
  • Spring Cloud版本与Spring Boot版本之间匹配关系「建议收藏」

    Spring Cloud版本与Spring Boot版本之间匹配关系「建议收藏」很多人在使用springboot和springcloud,但是对于这两者之间的版本关系不是很清楚,特别是在面临升级的时候不知道该如何操作。本文简要摘录的官方文档的部分内容作为依据,供广大同行参考。问题的提出,我现在使用的是1.5.1版本的springboot和Edgware.RELEASE版本的springcloud,我想升级到springboot到2.0.0,springcloud需要升…

    2022年4月30日
    68
  • 自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码[通俗易懂]

    自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码[通俗易懂]一、什么是PO模式全称:pageobjectmodel简称POMPO模式最核心的思想是分层,实现松耦合!实现脚本重复使用,实现脚本易维护性!主要分三层:1.基础层BasePage:封装一些最基础的selenium的原生的api方法,元素定位,框架跳转等。2.PO层:元素定位、获得元素对象,页面动作3.测试用例层:业务逻辑,数据驱动!三者的关系:PO层继承继承层,测试用例层调用PO层!二、非PO模式和PO模式优缺点对比笔者来自公众号:软测之家 非PO模式 PO模式.

    2022年5月27日
    91
  • java illegal character_java.lang.illegalaccesserror

    java illegal character_java.lang.illegalaccesserror本文整理匯總了Java中org.apache.commons.lang3.ArrayUtils.isNotEmpty方法的典型用法代碼示例。如果您正苦於以下問題:JavaArrayUtils.isNotEmpty方法的具體用法?JavaArrayUtils.isNotEmpty怎麽用?JavaArrayUtils.isNotEmpty使用的例子?那麽恭喜您,這裏精選的方法代碼示例或許可以為…

    2022年9月28日
    0
  • C语言实现大数运算[通俗易懂]

    C语言实现大数运算[通俗易懂]由于整型数的位数有限,因此整型数不能满足大整数(超长整数)的运算要求。大整数计算是利用字符串来表示大整数,即用字符串的一位字符表示大整数的一位数值,然后根据四则运算规则实现大整数的四则运算。大数的结构typedefstructbigint{char*num;//指向长整数数组(序号0中保存着最高位)charsign;

    2022年10月7日
    0
  • msm8953之spi配置

    msm8953之spi配置//===========================================spi5msm8953.dtsialiases{spi5=&spi_5;};spi_5:spi@7af5000{/*BLSP1QUP5*/compatible=”qcom,spi-qup-v2″;…

    2022年10月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号