sqlsever按字符提取各层级数据

微信截图_20220118140841.png

把A列数据各个层级的数据分别提取出来, 结果如黄色背景

柿柿 发布于 2022-1-18 14:10
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
snrtuemcLv8专家互助
发布于2022-1-18 14:12
  • 柿柿 柿柿(提问者) 最多只能拆分成4个字段。如果是5个字段的怎么处理
    2022-01-18 18:44 
  • snrtuemc snrtuemc 回复 柿柿(提问者) 下面有方案的啊
    2022-01-18 18:55 
最佳回答
0
墨残烛Lv5初级互助
发布于2022-1-18 14:53(编辑于 2022-1-18 14:55)

SELECT

a.A,

a.B,

a.C

FROM

(

SELECT

PARSENAME( REPLACE( a.Content , '.', '.' ), 3 ) AS A,

PARSENAME( REPLACE( a.Content , '.', '.' ), 2 ) AS B,

PARSENAME( REPLACE( a.Content , '.', '.' ), 1 ) AS C 

FROM

test AS a 

WHERE

len( a.content ) - len(

replace( a.content, '.', '' )) = 2 

UNION

SELECT

PARSENAME( REPLACE( a.Content , '.', '.' ), 2 ) AS A,

PARSENAME( REPLACE( a.Content , '.', '.' ), 1 ) AS B,

'' AS C 

FROM

test AS a 

WHERE

len( a.content ) - len(

replace( a.content, '.', '' )) = 1 UNION

SELECT

PARSENAME( REPLACE( a.Content , '.', '.' ), 1 ) AS A,

'' AS B,

'' AS C 

FROM

test AS a 

WHERE

len( a.content ) - len(

replace( a.content, '.', '' )) = 0 

)as a

代码中大写字母ABC分别对应图片中的BCD列数据,A为第一层,B为第二层,C为第三层,ABC通过.间隔

  • 3关注人数
  • 318浏览人数
  • 最后回答于:2022-1-18 14:55
    请选择关闭问题的原因
    确定 取消
    返回顶部