比如数据库中有如下记录
蜡笔小新第1集
蜡笔小新第2集
蜡笔小新第3集
蜡笔小新第4集
............
蜡笔小新第99集
蜡笔小新第100集海贼王第1集
海贼王第2集
海贼王第3集
海贼王第4集
..........
海贼王第99集
海贼王第100集
等等数据,怎么如何把“第*集”去掉,然后把相应的数据关连起来,也就是所有“蜡笔小新”在一起,“海贼王”在一起。
蜡笔小新第1集
蜡笔小新第2集
蜡笔小新第3集
蜡笔小新第4集
............
蜡笔小新第99集
蜡笔小新第100集海贼王第1集
海贼王第2集
海贼王第3集
海贼王第4集
..........
海贼王第99集
海贼王第100集
等等数据,怎么如何把“第*集”去掉,然后把相应的数据关连起来,也就是所有“蜡笔小新”在一起,“海贼王”在一起。
第_集,第__集,第___集这样就可以了。
update T set col1=left(col1,patindex('%第%集%',col1)-1)
update tableA
set name='蜡笔小新'
where name like '%蜡笔小新%'update tableA
set name='海贼王'
where name like '%海贼王%'
update tableA
set name='蜡笔小新'
where name like '%蜡笔小新%'
一部一部去处理。我想让同一部电影,比如“蜡笔小新”,关连起来,关连是通一个ParentID字段,假如“蜡笔小新第1集”的ID是1,那么所有“蜡笔小新第*集”的ParentID都为1。有没有好的解决办法呢?
??还是没搞明白,晕楼主最终要的是什么?是一个表吗?
update tableA
set name='蜡笔小新'
where name like '%蜡笔小新%'
这个有什么问题吗?
DECLARE @t TABLE(col nvarchar(1000))
INSERT @t SELECT N'蜡笔小新第1集'
UNION ALL SELECT N'蜡笔小新第2集'
UNION ALL SELECT N'蜡笔小新第3集'
UNION ALL SELECT N'蜡笔小新第4集'
UNION ALL SELECT N'蜡笔小新第99集'
UNION ALL SELECT N'蜡笔小新第100集'UNION ALL SELECT N'海贼王第1集'
UNION ALL SELECT N'海贼王第2集'
UNION ALL SELECT N'海贼王第3集'
UNION ALL SELECT N'海贼王第4集'
UNION ALL SELECT N'海贼王第99集'
UNION ALL SELECT N'海贼王第100集'UNION ALL SELECT N'英雄'-- 处理
SELECT DISTINCT
col = LEFT(col, PATINDEX(N'%第%集%', col + N'第集') - 1)
FROM @t
-- 结果
col
---------------
海贼王
蜡笔小新
英雄(3 行受影响)
DECLARE @t TABLE(col nvarchar(1000), ParentID int)
INSERT @t(col) SELECT N'蜡笔小新第1集'
UNION ALL SELECT N'蜡笔小新第2集'
UNION ALL SELECT N'蜡笔小新第3集'
UNION ALL SELECT N'蜡笔小新第4集'
UNION ALL SELECT N'蜡笔小新第99集'
UNION ALL SELECT N'蜡笔小新第100集'UNION ALL SELECT N'海贼王第1集'
UNION ALL SELECT N'海贼王第2集'
UNION ALL SELECT N'海贼王第3集'
UNION ALL SELECT N'海贼王第4集'
UNION ALL SELECT N'海贼王第99集'
UNION ALL SELECT N'海贼王第100集'UNION ALL SELECT N'英雄'-- 处理
SELECT id = IDENTITY(int, 1, 1), col
INTO #
FROM(
SELECT DISTINCT
col = LEFT(col, PATINDEX(N'%第%集%', col + N'第集') - 1)
FROM @t
)A
UPDATE A SET
ParentID = B.id
FROM @t A, # B
WHERE A.col LIKE B.col + N'%'
DROP TABLE #SELECT * FROM @t
(
filmname varchar(20)
)
insert A
select '蜡笔小新第1集' union all
select '蜡笔小新第2集' union all
select '海贼王第1集' union all
select '海贼王第2集' union all
select '火影忍者第1集' union all
select '火影忍者第2集' union all
select '圣斗士第1集' union all
select '圣斗士第2集'
select * from A
select id=identity(int,1,1),* into #T from (select distinct left(filmname,charindex('第',filmname)-1) xx from a) x
select * from #Tid xx
----------- --------------------
1 海贼王
2 火影忍者
3 蜡笔小新
4 圣斗士