字段里字符串的处理问题

原创 2004年08月05日 20:48:00

原帖地址:

http://community.csdn.net/Expert/topic/3244/3244874.xml?temp=.5755274
表一:MenuTree?
Id??????????????????? context?????????????????
-----------? ---------------------------
1????????????????????? 商场监测系统?
3????????????????????? 综合报表分析?
4????????????????????? 销售月报表?
6????????????????????? ◇销售数据采集?
7????????????????????? ◇监测商场管理?
9????????????????????? ◇监测产品管理?
?
表二:? jslmb?
?
jsbh????? jsmc?????????????????? kgllm????????
------- ------------? -------------------------
1??????? 查询所有数据????????? '1','2','3','4','5'
2??????? 查询西北区数据??????? '1','2','4','5','9'
?
?


如何把删除表二的Kgllm(可管理栏目)字段里的表一不存在的栏目编号剔除
?
例如:
表一的IdZ字段:"2"和"5"值已不存在了。

我要把表二的kgllm字段里的"2"和"5"值剔除掉,其它值如"1"、"3"等值要保留

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

--测试数据
create table MenuTree(id int,context varchar(20))
insert MenuTree select 1,'商场监测系统'
union? all????? select 3,'综合报表分析'
union? all????? select 4,'销售月报表'
union? all????? select 6,'◇销售数据采集'
union? all????? select 7,'◇监测商场管理'
union? all????? select 9,'◇监测产品管理'

create table jslmb(jsbh int,jsmc varchar(20),kgllm varchar(8000))
insert jslmb select 1,'查询所有数据'? ,'''1'',''2'',''3'',''4'',''5'''
union? all?? select 2,'查询西北区数据','''1'',''2'',''4'',''5'',''9'''
go

--创建一个辅助处理数据的表(这里的8000根据你的 kgllm 的大小确定,如果你的 kgllm 长度是1000,就改为1000)
select top 8000 id=identity(int,1,1) into 序数表
from syscolumns a,syscolumns b
alter table 序数表 add constraint pk_id_序数表 primary key(id)
go

--更新处理
select a.jsbh,kgllm=substring(a.kgllm,b.id,charindex(',',a.kgllm+',',b.id)-b.id)
?,re=cast('' as varchar(8000))
into #t
from jslmb a,序数表 b,MenuTree c
where b.id<=len(a.kgllm)
?and substring(','+a.kgllm,b.id,1)=','
?and stuff(substring(a.kgllm,b.id,charindex(',',a.kgllm+',',b.id)-b.id-1),1,1,'')
??=c.id
order by a.jsbh

declare @jsbh int,@re varchar(8000)
update #t set @re=case @jsbh when jsbh then @re+','+kgllm else kgllm end
?,re=@re,@jsbh=jsbh

update a set kgllm=b.re
from jslmb a,(
?select jsbh,re=max(re) from #t group by jsbh
)b where a.jsbh=b.jsbh

drop table #t

--显示更新结果
select * from jslmb
go

--删除测试数据
drop table MenuTree,jslmb
drop table 序数表

/*--测试结果

jsbh??????? jsmc???????????????? kgllm??????????
----------- -------------------- ----------------
1?????????? 查询所有数据?????????? '1','3','4'
2?????????? 查询西北区数据???????? '1','4','9'

(所影响的行数为 2 行)
--*/

ASP.NET之‘字符串’

-
  • 1970年01月01日 08:00

SSIS 字符串转时间格式注意事项

花了两天时间
  • feifly329
  • feifly329
  • 2014-04-10 10:08:37
  • 3579

使用SSIS进行数据清洗

简介 %26#160;%26#160;%26#160; OLTP系统的后端关系数据库用于存储不同种类的数据,理论上来讲,数据库中每一列的值都有其所代表的特定含义,数据也应该在存入数据库之前进行规范化...
  • lin91o7c
  • lin91o7c
  • 2014-10-08 09:28:05
  • 533

SSIS里字符串转日期

用SSIS处理平面数据导入很方便(局限于指定符号分割的形式) 但是在处理日期问题上遇到困难  如字符串“20100601”,对应数据库的“2010-06-01 00:00:00” 遇到这种问题需要使用...
  • bing1051
  • bing1051
  • 2010-07-01 14:44:00
  • 1606

SSIS 包配置

在商业智能解决方案中,SSIS工程有两种部署模式:工程部署(project deployment)和包部署(package deployment),默认是工程部署模式,在Package的管理上,工程部...
  • zhaohongyan6
  • zhaohongyan6
  • 2017-04-27 10:01:23
  • 575

SSIS系列之-BT的OLAP数据库连接字符串导致的问题

最近因为工作的需要,需要通过SSIS从OLAP中导出数据,费了很大的力气,终于把所有的该配的都配对了,但是没想到,一运行就出现下面的错误:SSIS package "ExtractUserTagPoi...
  • chestnuts
  • chestnuts
  • 2007-05-09 15:42:00
  • 2658

短信字符串分拆

分拆短信中的数据/*--问题描述根据自定义信息前缀表(每个信息前缀可以看作是一个信息分隔符)进行字符串分拆处理的函数,在分拆处理函数中,首先定义了一个信息前缘表@splits,表中包含了AC、BC、C...
  • zjcxc
  • zjcxc
  • 2005-04-15 08:35:00
  • 3686

教你如何实现SQL下的字符串拆分

因为工作的原因,开发过一个拆分字符串的SQL函数,现在把它贴出来,与大家共勉学习。 该函数如下:CREATE function [dbo].[StringSplit](@str nvarchar(ma...
  • chestnuts
  • chestnuts
  • 2007-04-18 10:54:00
  • 1061

理解SSIS包保护级别(SSIS Package Protection Level)

SSIS包有一个必须理解的属性。这个属性告诉SSIS如何处理包内的敏感信息。常见的是连接字符串当中存储的密码。为什么这个信息非常重要?因为如果不正确设置保护级别的话,SSIS包可能变得无法使用。其他开...
  • u012988208
  • u012988208
  • 2015-07-18 19:35:03
  • 2021

触发器实现字符串处理及统计

原帖地址:http://community.csdn.net/Expert/topic/3269/3269542.xml?temp=8.726138E-02table1序号  类别 起始号  终止号 ...
  • zjcxc
  • zjcxc
  • 2004-08-16 23:56:00
  • 3814
收藏助手
不良信息举报
您举报文章:字段里字符串的处理问题
举报原因:
原因补充:

(最多只允许输入30个字)