超难问题:sql语句

wangfeng0215 2004-04-01 09:26:30
假设一张表中有字段A,
其中内容假设为3a14b16c,14a5b9d......
我想取得结果为17a19b16c9d
请问语句应该如何写???

...全文
83 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 元老 2004-04-01
  • 打赏
  • 举报
回复
--测试

--处理函数
create function f_str(@str varchar(8000))
returns varchar(8000)
as
begin
declare @t table(num int,st varchar(10))
declare @a int,@b varchar(10),@i int
select @str=replace(@str,',','')
,@i=patindex('%[^0-9]%',@str)
while @i>0
begin
select @a=left(@str,@i-1)
,@str=substring(@str,@i,8000)
,@i=patindex('%[0-9]%',@str)
,@b=case @i when 0 then @str else left(@str,@i-1) end
insert @t values(@a,@b)
if @i>0
select @str=substring(@str,@i,8000)
,@i=patindex('%[^0-9]%',@str)
end
set @str=''
select @str=@str+cast(num as varchar)+st
from(
select num=sum(num),st from @t group by st
)a order by st
return(@str)
end
go

--调用示例
select dbo.f_str('3a14b16c,14a5b9d'),dbo.f_str('3a14b16cccc,14a5b9d')
go

drop function f_str

/*--测试结果
------------ -----------------
17a19b16c9d 17a19b16cccc9d

(所影响的行数为 1 行)
--*/
zjcxc 元老 2004-04-01
  • 打赏
  • 举报
回复
--处理函数
create function f_str(@str varchar(8000))
returns varchar(8000)
as
begin
declare @t table(num int,st varchar(10))
declare @a int,@b varchar(10),@i int
select @str=replace(@str,',','')
,@i=patindex('%[^0-9]%',@str)
while @i>0
begin
select @a=left(@str,@i-1)
,@str=substring(@str,@i,8000)
,@i=patindex('%[0-9]%',@str)
,@b=case @i when 0 then @str else left(@str,@i-1) end
insert @t values(@a,@b)
if @i>0
select @str=substring(@str,@i,8000)
,@i=patindex('%[^0-9]%',@str)
end
set @str=''
select @str=@str+cast(num as varchar)+st
from(
select num=sum(num),st from @t group by st
)a order by st
return(@str)
end
go

--调用示例
select dbo.f_str('3a14b16c,14a5b9d')
go
progress99 2004-04-01
  • 打赏
  • 举报
回复
學藝不精,看不出門道。
victorycyz 2004-04-01
  • 打赏
  • 举报
回复

函数怎么写呀??
帮帮忙好吗???

------------------

我在问你话呢,你怎么不回答?以为我解不了你的“难题”是吗?

wangfeng0215 2004-04-01
  • 打赏
  • 举报
回复
函数怎么写呀??
帮帮忙好吗???
pbsql 2004-04-01
  • 打赏
  • 举报
回复
力气活,难度并不大
realgz 2004-04-01
  • 打赏
  • 举报
回复
ps :以后少用超难勾引人,难度不够会招来反感。
realgz 2004-04-01
  • 打赏
  • 举报
回复
写个函数!把所有字符串中的字母位置定位出来,然后汇总数字,什么有人品问题的查询,一句话无解,所以一般没兴趣!
newdongkui 2004-04-01
  • 打赏
  • 举报
回复
SELECT * FROM YOURTABLE
WHERE CHARINDEX( ','+'17a19b16c9d'+',' , ','+A+',' ) > 0
zjcxc 元老 2004-04-01
  • 打赏
  • 举报
回复
这个是什么规律啊?
victorycyz 2004-04-01
  • 打赏
  • 举报
回复

格式是这样很有规律的吗?会不会出现如“ab123c4"之类的记录?
liqiang2003 2004-04-01
  • 打赏
  • 举报
回复
你去找比尔吧,或许只有他才明白你的意思...

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧