首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 问个SQL语句~~~~ [已结贴,结贴人:firein]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • firein
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-21 10:39:11 楼主
    比如有个字符串 ‘@@@AA@@@A@@@’要把它变成 ‘ AA@@@A ’

    1.就是把两旁的@@@替换成一个半角空格 当中的@@@则不变
    2.两旁的@@@的个数都是3的整数倍 就是有可能是  ‘@@@@@@AAA@@@@@@@@@’ 每3个@@@变成一个半角空格

    用正则能写吗?还是循环?
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • only_endure
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:43:071楼 得分:2
    友情up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wzy_love_sly
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 10:56:182楼 得分:48
    SQL code
    create function get_str(@str varchar(100),@replace varchar(100)) returns varchar(100) as begin while left(@str,3)=@replace set @str=stuff(@str,1,3,'') while right(@str,3)=@replace set @str=left(@str,len(@str)-3) return @str end go select dbo.get_str('@@@AA@@@A@@@','@@@')


    AA@@@A
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • firein
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 12:08:033楼 得分:0
    SQL code
    DECLARE @T varchar(100) declare @LEFT_SPCAE_COUNT decimal declare @RIGHT_SPCAE_COUNT decimal set @LEFT_SPCAE_COUNT = 0; SET @RIGHT_SPCAE_COUNT = 0 set @T = '@@@@@@AAA@@@@@AA@@@@@@'; WHILE CHARINDEX('@@@',@T) <> 0 AND PATINDEX('%[^@]%',@T) > CHARINDEX('@@@',@T) BEGIN SET @T = RIGHT(@T,LEN(@T) -3) SET @LEFT_SPCAE_COUNT = @LEFT_SPCAE_COUNT + 1; END SET @T = REVERSE(@T) while CHARINDEX('@@@',@T) <> 0 and PATINDEX('%[^@]%',@T) > CHARINDEX('@@@',@T) begin set @T = right(@T,len(@T) -3) SET @RIGHT_SPCAE_COUNT = @RIGHT_SPCAE_COUNT + 1; end SET @T = REVERSE(@T) SET @T = REPLICATE(' ',@LEFT_SPCAE_COUNT) + @T + REPLICATE(' ',@RIGHT_SPCAE_COUNT) print @T


    自己写了
    散分了~~~~~~~~


    大家有没其他方法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • firein
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 12:08:354楼 得分:0
    呵呵 竟然自己回复后才能看到别人的回复
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • firein
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 12:11:035楼 得分:0
    引用 2 楼 wzy_love_sly 的回复:
    SQL codecreate function get_str(@str varchar(100),@replace varchar(100))
    returns varchar(100)
    as
    begin
    while left(@str,3)=@replace
    set @str=stuff(@str,1,3,'')
    while right(@str,3)=@replace
    set @str=left(@str,len(@str)-3)
    return @str
    end
    go
    select dbo.get_str('@@@AA@@@A@@@','@@@')


    AA@@@A


    太强了~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wgzaaa
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 12:12:306楼 得分:0
    每次看不到时点管理菜单-->生成帖子
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • firein
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 12:12:397楼 得分:0
    set @str=stuff(@str,1,3,'')
    应该是:
    set @str=stuff(@str,1,3,' ')
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved