sql语句 对号入座

naner_china 2009-03-19 10:02:29
create table #tb(f1 varchar(100))
insert into #tb
select '5,8,9,10,13' union all
select '5,8,10,12,13'union all
select '5,9,10,12,13'union all
select '6,7,8,9,11' union all
select '1,3,4,5,11' union all
select '2,4,5,6,7' union all
select '1,3,5,7,8'


给定一个字符串如下
A,N,D,5,9,2,M,Y,-,X,.,+,0,4,S
要求按照#tb表中f1字段的值对字符串相应位置取值,各个值以空格分开
对应关系:
比如'5,8,9,10,13' 取字符串A,N,D,5,9,2,M,Y,-,X,.,+,0,4,S 第5,8,9,10,13个位置的对应值 结果 9 Y - X 0 (值与值间加空格)

上面字符串的最后结果如下:
9 Y - X 0
9 Y X + 0
9 - X + 0
2 M Y - .
A D 5 9 .
A D 9 M Y
请用sql2000实现
...全文
188 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangCK 2009-03-19
  • 打赏
  • 举报
回复
CREATE FUNCTION dbo.getdata(@s1 VARCHAR(50),@s2 VARCHAR(50))
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @t TABLE(id int identity,data VARCHAR(10))
DECLARE @result VARCHAR(50)
INSERT @t(data)
SELECT
SUBSTRING(@s2,number,CHARINDEX(',',@s2+',',number)-number)
FROM master.dbo.spt_values
WHERE type='p'
AND number BETWEEN 1 AND LEN(@s2)
AND SUBSTRING(','+@s2,number,1)=','

SET @result=''
SELECT
@result=@result+' '+data
FROM @t
WHERE CHARINDEX(','+RTRIM(id)+',',','+@s1+',')>0

RETURN STUFF(@result,1,1,'');
END
GO

create table #tb(f1 varchar(100))
insert into #tb
select '5,8,9,10,13' union all
select '5,8,10,12,13'union all
select '5,9,10,12,13'union all
select '6,7,8,9,11' union all
select '1,3,4,5,11' union all
select '2,4,5,6,7' union all
select '1,3,5,7,8'

SELECT
f1,
dbo.getdata(f1,'A,N,D,5,9,2,M,Y,-,X,.,+,0,4,S')
FROM #tb

GO
DROP TABLE #tb
DROP FUNCTION dbo.getdata
肥龙上天 2009-03-19
  • 打赏
  • 举报
回复

----创建函数
alter function fn_getString(@str varchar(50))
returns varchar(50)
as
begin
declare @R varchar(50)
select @R = isnull(@R,'')+dd+' ' from ta where charindex(','+rtrim(id)+',',','+@str+',')>0
return @R
end

select *,rr = dbo.fn_getString(f1) from #tb
/*
f1 rr
f1 rr
---------------------------------------------------------------------------------------------------- --------------------------------------------------
5,8,9,10,13 9 Y - X 0
5,8,10,12,13 9 Y X + 0
5,9,10,12,13 9 - X + 0
6,7,8,9,11 2 M Y - .
1,3,4,5,11 A D 5 9 .
2,4,5,6,7 N 5 9 2 M
1,3,5,7,8 A D 9 M Y

(7 row(s) affected)

*/
naner_china 2009-03-19
  • 打赏
  • 举报
回复
正解 谢谢 结贴
肥龙上天 2009-03-19
  • 打赏
  • 举报
回复

if object_id('ta') is not null drop table ta
go
create table ta(id int identity(1,1),dd varchar(1))
insert ta values('A')
insert ta values('N')
insert ta values('D')
insert ta values('5')
insert ta values('9')
insert ta values('2')
insert ta values('M')
insert ta values('Y')
insert ta values('-')
insert ta values('X')
insert ta values('.')
insert ta values('+')
insert ta values('0')
insert ta values('4')
insert ta values('S')
go
select * from ta
----创建函数
create function fn_getString(@str varchar(50))
returns varchar(50)
as
begin
declare @R varchar(50)
select @R = isnull(@R,'')+dd from ta where charindex(','+rtrim(id)+',',','+@str+',')>0
return @R
end

select *,rr = dbo.fn_getString(f1) from #tb
/*
f1 rr
---------------------------------------------------------------------------------------------------- --------------------------------------------------
5,8,9,10,13 9Y-X0
5,8,10,12,13 9YX+0
5,9,10,12,13 9-X+0
6,7,8,9,11 2MY-.
1,3,4,5,11 AD59.
2,4,5,6,7 N592M
1,3,5,7,8 AD9MY

(7 row(s) affected)
*/
dawugui 2009-03-19
  • 打赏
  • 举报
回复
小梁那个太复杂了.
dawugui 2009-03-19
  • 打赏
  • 举报
回复
--用个函数来解决.

create table tb(f1 varchar(100)) 
insert into tb
select '5,8,9,10,13' union all
select '5,8,10,12,13'union all
select '5,9,10,12,13'union all
select '6,7,8,9,11' union all
select '1,3,4,5,11' union all
select '2,4,5,6,7' union all
select '1,3,5,7,8'
go

create function my_func (@f1 varchar(50))
RETURNS varchar(50)
AS
BEGIN
declare @str varchar(50)
declare @rtn varchar(50)
declare @i as int
set @str = 'A,N,D,5,9,2,M,Y,-,X,.,+,0,4,S'
set @rtn = ''
set @i = 0
while charindex(',',@f1) > 0
begin
set @i = left(@f1 , charindex(',',@f1) - 1)
set @rtn = @rtn + ' ' + substring(@str , (@i-1)*2+1 , 1)
set @f1 = substring(@f1 , charindex(',',@f1) + 1 , len(@f1))
end
set @i = @f1
set @rtn = @rtn + ' ' + substring(@str , (@i-1)*2+1 , 1)
RETURN(@rtn)
END
go

select f1 , f2 = dbo.my_func(f1) from tb

drop table tb
drop function dbo.my_func

/*
f1 f2
---------------------------------------------------------------------------------------------------- --------------------------------------------------
5,8,9,10,13 9 Y - X 0
5,8,10,12,13 9 Y X + 0
5,9,10,12,13 9 - X + 0
6,7,8,9,11 2 M Y - .
1,3,4,5,11 A D 5 9 .
2,4,5,6,7 N 5 9 2 M
1,3,5,7,8 A D 9 M Y

(所影响的行数为 7 行)

*/
htl258_Tony 2009-03-19
  • 打赏
  • 举报
回复
两贴一样的,小梁搞定了,但要在2005的环境下运行就是了.
naner_china 2009-03-19
  • 打赏
  • 举报
回复
sql2005语法我不熟悉
看不懂
liangCK
帮写个sql2000的吧
牙签是竹子的 2009-03-19
  • 打赏
  • 举报
回复

liangCK 2009-03-19
  • 打赏
  • 举报
回复
跟着刚刚的那个思想不就行了吗?
下载代码方式:https://pan.quark.cn/s/28492da20c79 依据所提供的文件资料,本资源将系统地探讨FPGA(即现场可编程门阵列)的核心概念、其在视频图像技术领域的入门及进阶知识要点,以及图像处理算法的实现方法。此外,还将对VIPBoardBig这一特定FPGA开发板的详细资料和使用途径进行深入剖析。 FPGA的入门与进阶学习主要涉及以下核心内容: 1. FPGA的基础概念:FPGA是一种能够通过编程进行配置的集成电路,主要目的是达成硬件逻辑的可重构特性。该类芯片由大量的可配置逻辑模块(CLB)、输入输出模块(IOB)以及可编程互连资源共同构成。 2. FPGA开发板与相关套件:FPGA开发板是一种用于FPGA芯片学习和测试的硬件平台,通常配备有基础的外设设备,例如LED指示灯、按键开关、LCD显示屏、串口通信接口等。套件则通常包含硬件板卡、技术文档、相关资源,以及可能的软件工具和示例代码集。VIPBoardBig即为本教程选用的FPGA开发板,拥有特定的硬件配置和功能特性。 3. FPGA的开发流程:FPGA开发一般涉及硬件描述语言(HDL)的设计与仿真阶段,常用语言为Verilog或VHDL。随后,借助综合工具将设计蓝图转化为FPGA内部的逻辑网络,最终通过编程设备将配置文件传输至FPGA芯片中,从而实现设计的预期功能。 4. 外设开发与设计工作:涵盖LED显示控制、键盘驱动、LCD显示驱动、UART串口设计等基础外设的开发任务。这部分知识将引导学习者掌握如何在FPGA平台上管理和运用这些基础外设。 5. VGA驱动显示与字符显示测试:VGA(Video Graphics Array)是一种视频传输接口标准,能够支持640x480...
内容概要:本文系统阐述了企业在搭建官方知识库后如何通过“7步锚定法”实现GEO(生成式引擎优化)的落地,重点在于从知识库走向内容矩阵的战略升级。文章指出知识库仅为起点,真正的核心是让大模型“信任并推荐”企业内容。为此提出“一个主战场+多个品牌布局”的策略,强调需根据行业特性选择高商业流量的大模型(如豆包、文心一言、通义千问等),而非工具性模型(如ChatGPT、Claude)。通过业务场景画像、大模型流量测绘、采信逻辑拆解、内容架构设计、语义关键词埋点、信源建设与效果迭代七步法,构建高质量、高可信度的内容体系,并警惕“全模型覆盖、内容堆砌、一套内容通用、忽视第三方平台”四大误区。最终指出GEO本质是一场认知战,比拼的是对大模型逻辑与客户需求的理解深度及长期主义投入。; 适合人群:已完成官方知识库搭建、希望提升AI引用率与获客效率的企业市场负责人、品牌运营、数字营销从业者及SEO/GEO优化相关人员。; 使用场景及目标:①指导企业科学选择主攻大模型并制定差异化内容策略;②构建符合大模型采信逻辑的高质量内容矩阵;③避免常见GEO落地误区,提升AI搜索下的品牌曝光与转化效果;④建立可持续优化的数据反馈闭环。; 阅读建议:建议结合自身行业特征与客户决策路径,逐步实践“7步法”,优先聚焦单一主战场打透,注重内容质量与第三方权威信源建设,坚持3-6个月持续投入以观察真实效果。

34,875

社区成员

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

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