Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > 在Transact-SQL中处理字符串数据
【标  题】:在Transact-SQL中处理字符串数据
【关键字】:Transact-SQL
【来  源】:http://blog.csdn.net/aShun008/archive/2006/12/27/1464663.aspx

在Transact-SQL中处理字符串数据

Your Ad Here

在Transact-SQL中处理字符串数据
Author:aShun008

    这里主要演示在Transact-SQL中处理字符串数据的一种方法,由于这也是针对笔者工作中遇到的问题,因此只能说是针对这个或者这类问题所提供的一个方法,希望能给需要的朋友“抛砖引玉”。

问题:
    将类似“465,466,467,467,468,469,470,464,465”这样的用逗号隔开的数字组成一串字符修改成“464,465,466,467,468,469,470”这样的一个字符串。

注意:
    1、原字符串的长度是不确定的,但可以肯定是用逗号隔开的整型数字;
    2、目标字符串逗号隔开的数字是按照从小到大的顺序排列的,并且没有重复数值;

方法步骤:
    1、取出逗号间的数据保存到临时表;
    2、用SELECT DISTINCT FieldName FROM #Table ORDER BY FieldName 整理数据顺序和重复;
    3、建立游标叠加出目标字符串;

实现代码:
    DECLARE 
    @Str VARCHAR(255),    --源字符串
    @Separator VARCHAR(1) --分隔符

    SET @Str = '465,466,467,467,468,469,470,464,465'
    SET @Separator = ','  --指定为逗号分隔

    DECLARE 
    @Value VARCHAR(10),  --临时保存取出的单个数值
    @CommaPos INT,       --逗号的位置
    @Result VARCHAR(255) --保存结果字符串

    SET @Result = ''     --置结果初始值为空(为后面好判断)

    CREATE TABLE #T (Mile int NULL) 
    SET @CommaPos =  CHARINDEX(@Separator, @Str)
    WHILE (@CommaPos <> 0)
    BEGIN
    SET @Value = SUBSTRING(@Str, 1, @CommaPos - 1)
    INSERT INTO #T (Mile) VALUES (@Value)
    SET @Str = STUFF(@Str, 1, @CommaPos, '')
    SET @CommaPos =  CHARINDEX(@Separator, @Str)
    END

    DECLARE cur_t SCROLL CURSOR FOR SELECT DISTINCT Mile FROM #T ORDER BY Mile
    OPEN cur_t
    FETCH FIRST FROM cur_t INTO @Value
    WHILE @@FETCH_STATUS = 0
    BEGIN
    IF (@Result = '' )
    SET @Result = @Value
    ELSE
    SET @Result = @Result + ',' + @Value
    FETCH NEXT FROM cur_t INTO @Value
    END
    CLOSE cur_t
    DEALLOCATE cur_t

    DROP TABLE #T

    PRINT @Result

--[完]16:42 2006-12-27

使用TableDiff实用工具解决事务复制中的问题:【上一篇】
SQLServer一些小技巧:【下一篇】
【相关文章】
  • SQL Server 2005 Beta 2 Transact-SQL 增强功能
  • 如何利用Transact-SQL执行事务
  • Transact-SQL 语法约定
  • transact-sql数组
  • 《MS SQL Server 2000管理员手册》系列——15. 使用Transact-SQL和Enterprise Manager管理数据表
  • Transact-SQL语句总汇
  • Transact-SQL 语法规则
  • 【随机文章】
  • IP网络设计系列之--IP地址管理
  • ORA-06533: Subscript beyond count
  • w3 upload组件实例应用
  • Certmgr.exe逆向工程之五 全局变量及函数
  • WinXP应用技巧之“程序不老链接常在”
  • 一个简单C++的调试代码
  • Photoshop制作的白天变夜景
  • 享受 .NET 时代的 COM+ 开发
  • 编程修养(1)
  • 名誉 reputation
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.