怎么将导入的txt文本按照句号拆分为多行

baidu_35758285 2017-01-16 08:49:11
dbo.T1 中字段 TXT 中有一行包含百万字的文本,里面有各种符号,希望按照句号经行拆分。
...全文
691 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
道素 2017-01-16
  • 打赏
  • 举报
回复
方法二:

WITH tb(s) AS (
SELECT N'这几天心里颇不宁静。今晚在院子里坐着乘凉,忽然想起日日走过的荷塘,在这满月的光里,总该另有一番样子吧。月亮渐渐地升高了,墙外马路上孩子们的欢笑,已经听不见了;妻在屋里拍着闰儿,迷迷糊糊地哼着眠歌。我悄悄地披了大衫,带上门出去。
  沿着荷塘,是一条曲折的小煤屑路。这是一条幽僻的路;白天也少人走,夜晚更加寂寞。荷塘四面,长着许多树,蓊蓊郁郁的。路的一旁,是些杨柳,和一些不知道名字的树。没有月光的晚上,这路上阴森森的,有些怕人。今晚却很好,虽然月光也还是淡淡的。
  路上只我一个人,背着手踱着。这一片天地好像是我的;我也像超出了平常的自己,到了另一世界里。我爱热闹,也爱冷静;爱群居,也爱独处。像今晚上,一个人在这苍茫的月下,什么都可以想,什么都可以不想,便觉是个自由的人。白天里一定要做的事,一定要说的话,现在都可不理。这是独处的妙处,我且受用这无边的荷香月色好了。
  曲曲折折的荷塘上面,弥望的是田田的叶子。叶子出水很高,像亭亭的舞女的裙。层层的叶子中间,零星地点缀着些白花,有袅娜地开着的,有羞涩地打着朵儿的;正如一粒粒的明珠,又如碧天里的星星,又如刚出浴的美人。微风过处,送来缕缕清香,仿佛远处高楼上渺茫的歌声似的。这时候叶子与花也有一丝的颤动,像闪电般,霎时传过荷塘的那边去了。叶子本是肩并肩密密地挨着,这便宛然有了一道凝碧的波痕。叶子底下是脉脉的流水,遮住了,不能见一些颜色;而叶子却更见风致了。
  月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。虽然是满月,天上却有一层淡淡的云,所以不能朗照;但我以为这恰是到了好处——酣眠固不可少,小睡也别有风味的。月光是隔了树照过来的,高处丛生的灌木,落下参差的斑驳的黑影,峭楞楞如鬼一般;弯弯的杨柳的稀疏的倩影,却又像是画在荷叶上。塘中的月色并不均匀;但光与影有着和谐的旋律,如梵婀玲上奏着的名曲。
  荷塘的四面,远远近近,高高低低都是树,而杨柳最多。这些树将一片荷塘重重围住;只在小路一旁,漏着几段空隙,像是特为月光留下的。树色一例是阴阴的,乍看像一团烟雾;但杨柳的丰姿,便在烟雾里也辨得出。树梢上隐隐约约的是一带远山,只有些大意罢了。树缝里也漏着一两点路灯光,没精打采的,是渴睡人的眼。这时候最热闹的,要数树上的蝉声与水里的蛙声;但热闹是它们的,我什么也没有。'
),p(LineNum,pos) AS (

    SELECT ROW_NUMBER()OVER(ORDER BY sv.number), sv.number FROM tb
    INNER JOIN MASTER.dbo.spt_values AS sv ON sv.type='P' AND sv.number>0
    WHERE (SUBSTRING(tb.s,sv.number,1)=N'。' OR sv.number=1)
)

SELECT p.LineNum, SUBSTRING(tb.s,p.pos+1,n.pos-p.pos) 
FROM tb ,p,p AS n WHERE n.LineNum=p.LineNum+1
 

LineNum	(No column name)
1	几天心里颇不宁静。
2	今晚在院子里坐着乘凉,忽然想起日日走过的荷塘,在这满月的光里,总该另有一番样子吧。
3	月亮渐渐地升高了,墙外马路上孩子们的欢笑,已经听不见了;妻在屋里拍着闰儿,迷迷糊糊地哼着眠歌。
4	我悄悄地披了大衫,带上门出去。
5	    沿着荷塘,是一条曲折的小煤屑路。
6	这是一条幽僻的路;白天也少人走,夜晚更加寂寞。
7	荷塘四面,长着许多树,蓊蓊郁郁的。
8	路的一旁,是些杨柳,和一些不知道名字的树。
9	没有月光的晚上,这路上阴森森的,有些怕人。
10	今晚却很好,虽然月光也还是淡淡的。
11	    路上只我一个人,背着手踱着。
12	这一片天地好像是我的;我也像超出了平常的自己,到了另一世界里。
13	我爱热闹,也爱冷静;爱群居,也爱独处。
14	像今晚上,一个人在这苍茫的月下,什么都可以想,什么都可以不想,便觉是个自由的人。
15	白天里一定要做的事,一定要说的话,现在都可不理。
16	这是独处的妙处,我且受用这无边的荷香月色好了。
17	    曲曲折折的荷塘上面,弥望的是田田的叶子。
18	叶子出水很高,像亭亭的舞女的裙。
19	层层的叶子中间,零星地点缀着些白花,有袅娜地开着的,有羞涩地打着朵儿的;正如一粒粒的明珠,又如碧天里的星星,又如刚出浴的美人。
20	微风过处,送来缕缕清香,仿佛远处高楼上渺茫的歌声似的。
21	这时候叶子与花也有一丝的颤动,像闪电般,霎时传过荷塘的那边去了。
22	叶子本是肩并肩密密地挨着,这便宛然有了一道凝碧的波痕。
23	叶子底下是脉脉的流水,遮住了,不能见一些颜色;而叶子却更见风致了。
24	    月光如流水一般,静静地泻在这一片叶子和花上。
25	薄薄的青雾浮起在荷塘里。
26	叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。
27	虽然是满月,天上却有一层淡淡的云,所以不能朗照;但我以为这恰是到了好处——酣眠固不可少,小睡也别有风味的。
28	月光是隔了树照过来的,高处丛生的灌木,落下参差的斑驳的黑影,峭楞楞如鬼一般;弯弯的杨柳的稀疏的倩影,却又像是画在荷叶上。
29	塘中的月色并不均匀;但光与影有着和谐的旋律,如梵婀玲上奏着的名曲。
30	    荷塘的四面,远远近近,高高低低都是树,而杨柳最多。
31	这些树将一片荷塘重重围住;只在小路一旁,漏着几段空隙,像是特为月光留下的。
32	树色一例是阴阴的,乍看像一团烟雾;但杨柳的丰姿,便在烟雾里也辨得出。
33	树梢上隐隐约约的是一带远山,只有些大意罢了。
34	树缝里也漏着一两点路灯光,没精打采的,是渴睡人的眼。
35	这时候最热闹的,要数树上的蝉声与水里的蛙声;但热闹是它们的,我什么也没有。
道素 2017-01-16
  • 打赏
  • 举报
回复
测试数据

WITH tb(s) AS (
SELECT N'这几天心里颇不宁静。今晚在院子里坐着乘凉,忽然想起日日走过的荷塘,在这满月的光里,总该另有一番样子吧。月亮渐渐地升高了,墙外马路上孩子们的欢笑,已经听不见了;妻在屋里拍着闰儿,迷迷糊糊地哼着眠歌。我悄悄地披了大衫,带上门出去。
  沿着荷塘,是一条曲折的小煤屑路。这是一条幽僻的路;白天也少人走,夜晚更加寂寞。荷塘四面,长着许多树,蓊蓊郁郁的。路的一旁,是些杨柳,和一些不知道名字的树。没有月光的晚上,这路上阴森森的,有些怕人。今晚却很好,虽然月光也还是淡淡的。
  路上只我一个人,背着手踱着。这一片天地好像是我的;我也像超出了平常的自己,到了另一世界里。我爱热闹,也爱冷静;爱群居,也爱独处。像今晚上,一个人在这苍茫的月下,什么都可以想,什么都可以不想,便觉是个自由的人。白天里一定要做的事,一定要说的话,现在都可不理。这是独处的妙处,我且受用这无边的荷香月色好了。
  曲曲折折的荷塘上面,弥望的是田田的叶子。叶子出水很高,像亭亭的舞女的裙。层层的叶子中间,零星地点缀着些白花,有袅娜地开着的,有羞涩地打着朵儿的;正如一粒粒的明珠,又如碧天里的星星,又如刚出浴的美人。微风过处,送来缕缕清香,仿佛远处高楼上渺茫的歌声似的。这时候叶子与花也有一丝的颤动,像闪电般,霎时传过荷塘的那边去了。叶子本是肩并肩密密地挨着,这便宛然有了一道凝碧的波痕。叶子底下是脉脉的流水,遮住了,不能见一些颜色;而叶子却更见风致了。
  月光如流水一般,静静地泻在这一片叶子和花上。薄薄的青雾浮起在荷塘里。叶子和花仿佛在牛乳中洗过一样;又像笼着轻纱的梦。虽然是满月,天上却有一层淡淡的云,所以不能朗照;但我以为这恰是到了好处——酣眠固不可少,小睡也别有风味的。月光是隔了树照过来的,高处丛生的灌木,落下参差的斑驳的黑影,峭楞楞如鬼一般;弯弯的杨柳的稀疏的倩影,却又像是画在荷叶上。塘中的月色并不均匀;但光与影有着和谐的旋律,如梵婀玲上奏着的名曲。
  荷塘的四面,远远近近,高高低低都是树,而杨柳最多。这些树将一片荷塘重重围住;只在小路一旁,漏着几段空隙,像是特为月光留下的。树色一例是阴阴的,乍看像一团烟雾;但杨柳的丰姿,便在烟雾里也辨得出。树梢上隐隐约约的是一带远山,只有些大意罢了。树缝里也漏着一两点路灯光,没精打采的,是渴睡人的眼。这时候最热闹的,要数树上的蝉声与水里的蛙声;但热闹是它们的,我什么也没有。'
)
方法一:

SELECT l.s FROM tb
CROSS APPLY(VALUES(CONVERT(XML,'<n>'+REPLACE(tb.s,N'。','</n><n>')+'</n>'))) x(n)
CROSS APPLY(SELECT s.b.value('.','nvarchar(max)') FROM x.n.nodes('n')s(b)) l(s)
baidu_35758285 2017-01-16
  • 打赏
  • 举报
回复
通过循环写的,已结完成
DECLARE @XH INT ,
    @XH1 INT ,
    @ZJZF VARCHAR(20)
SET @XH = 1
TZ:
SELECT  @XH1 = CHARINDEX('。', TXT, @XH)
FROM    #T1
INSERT  INTO T4
        ( TXT 
        )
        SELECT  SUBSTRING(TXT, @XH, CASE WHEN @XH1-@XH+1<0 THEN 0 ELSE @XH1-@XH+1 END ) TXT
        FROM    #T1
                 
SET @XH = @XH1 + 1
IF @XH1 <> 0 
    GOTO TZ
  

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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