回答

收藏

删除重复的重复字符

技术问答 技术问答 286 人阅读 | 0 人回复 | 2023-09-14

在存储过程中,我有一个字符串,类似于‘,sam,,bob,或,5 t' N4 u3 j- s! g
'sam,bob,then时 Sql Server函数。我在用Sql Server
8 d0 ]7 q* |( F, |! {/ F2008和.Net 3.5
: L4 M3 N& b5 n7 T: x提前致谢。$ x- E! n; u7 L4 F/ M# ?
                                                                5 _4 j3 ~9 M. e* v
    解决方案:                                                               
( Y) S: g2 B. A# ~9 N! M0 a4 I                                                                该选项适用于只使用逗号或最多398个连续逗号的字符串。
" y. P/ {) |# F1 z# `3 f) |    SELECT      CASE          WHEN TargetString NOT LIKE '%[^,]       THEN '' /*The string is exclusively commas*                ELSE             REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(TargetString,           REPLICATE(,16),*399/16 = 24 remainder 15*                   REPLICATE(',',8),','), /* 39/ 8 =  4 remainder 7*                   REPLICATE,* 11/ 4 =  2 remainder 3*                   REPLICATE(',*  5/ 2 =  2 remainder 1*            REPLICATE*  3/ 2 =  1 remainder 1*                END FROM T如果需要更多,在顶部添加额外的2功率,或者如果需要更少的功率,从顶部删除2功率。每个阶段的注释表示该阶段无法成功处理的最小数量。1 Q& ?. S( {0 {' k/ Y  p# p+ X- h
所有注释行都采用这种格式5 r: T( ]# z9 q% K$ n
/*  L/D    =  Q remainder R */D:    Corresponds to the length of the string generated by `REPLICATE`R:    Is always D-1Q R:  Form L for the next step因此,将系列向上扩展到另一个系列REPLICATE阶段,% `3 n4 [) F% J
D = 32 R = 31Q = 368 (399-31)L = (368 * 32= 11807这样,最多可以处理11806个字符的逗号部分。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则