• text与ntext字段的复制和合并处理示例.sql


    --1. 把一个表的text数据复制到另一个表。
    --测试数据
    CREATE TABLE #a(id int,a text)
    INSERT #a SELECT 1,'AA'
    UNION ALL SELECT 2,'BB'

    CREATE TABLE #b(id int,b text)
    INSERT #b SELECT 1,'XX'

    --用#a.a替换#b.b的数据,条件是#a.id=#b.id
    UPDATE b SET b=a.a
    FROM #a a,#b b
    WHERE a.id=b.id

    --把#a的数据复制到#b,条件是#a.id不在#b.id中
    INSERT #b(id,b) SELECT id,a FROM #a a
    WHERE NOT EXISTS(SELECT * FROM #b WHERE id=a.id)

    --显示处理结果
    SELECT * FROM #b
    DROP TABLE #a,#b
    /*--结果
    id          b
    ---------------- -------
    1           AA
    2           BB
    --*/
    GO


    /*===============================================*/


    --2. 将tb表中的col1及col2列中的数据合并到col列中,并且在合并的数据前后加上列标识。
    --测试数据
    CREATE TABLE tb(col text,col1 text,col2 text)
    INSERT tb SELECT 'a' ,NULL,'c2'
    UNION ALL SELECT NULL,'b2','c2'
    UNION ALL SELECT ''  ,'b3',NULL
    GO

    --更新处理
    DECLARE @p binary(16),@p1 binary(16),@p2 binary(16)
    DECLARE tb CURSOR LOCAL
    FOR
    SELECT TEXTPTR(col),TEXTPTR(col1),TEXTPTR(col2) FROM tb
    OPEN tb
    FETCH tb INTO @p,@p1,@p2
    WHILE @@FETCH_STATUS=0
    BEGIN
        IF TEXTVALID('tb.col',@p)=0
        BEGIN
            UPDATE tb SET col='' WHERE CURRENT OF tb
            UPDATE tb SET @p=TEXTPTR(col) WHERE CURRENT OF tb
        END
        IF TEXTVALID('tb.col1',@p1)=1
        BEGIN
            UPDATETEXT tb.col @p NULL 0 '<col1>'
            UPDATETEXT tb.col @p NULL 0 tb.col1 @p1
            UPDATETEXT tb.col @p NULL 0 '</col1>'
        END
        IF TEXTVALID('tb.col2',@p2)=1
        BEGIN
            UPDATETEXT tb.col @p NULL 0 '<col2>'
            UPDATETEXT tb.col @p NULL 0 tb.col2 @p2
            UPDATETEXT tb.col @p NULL 0 '</col2>'
        END
        FETCH tb INTO @p,@p1,@p2
    END
    CLOSE tb
    DEALLOCATE tb
    GO

    --显示结果
    SELECT * FROM tb
    DROP TABLE tb
    /*--结果
    col                              col1            col2
    -------------------------------------- ----------------------- ----------------------
    a<col2>c2</col2>                 NULL           c2
    <col1>b2</col1><col2>c2</col2>    b2              c2
    <col1>b3</col1>                  b3              NULL
    --*/
  • 相关阅读:
    笔记:JDBC 数据库
    笔记:Eclipse 安装 m2eclipse 插件
    Maven 生成项目站点
    Maven 项目报告插件
    【学习总结】《大话数据结构》- 第8章-查找
    【问题解决方案】Markdown正文中慎用星号否则容易变斜体
    【学习总结】《大话数据结构》- 第7章-图
    【学习总结】《大话数据结构》- 第6章-树
    【刷题】求出栈序列个数之卡特兰数公式
    【学习总结】《大话数据结构》- 第5章-串
  • 原文地址:https://www.cnblogs.com/shihao/p/2508594.html
Copyright © 2020-2023  润新知