sql数据库,截取语句(截取每列中的字段)

制表人也是省事,把这些信息放在一列中,现在需要取红框圈着的数据,有一百多行,操作了十多行,实在是蛋疼,还是用sql'搞吧

首先把excel表导入sqlserver中

//表名为“疑点详细说明”,22为姓名+身份证号的长度
select  substring(疑点详细说明,charindex('】【',疑点详细说明)+2,22)
 from [学前教育].[dbo].[C_08_10_非贫困人员违规领取低保救助金情况]

得到结果,但是明显是不完美的,因为姓名如果是两个字,截取的有】

sql数据库,截取语句(截取每列中的字段)_第1张图片

--------------------------------------------------------------我是分割线----------------------------------------------------------------------------------------------------

在网上找了一下,终于找到完美的方法了

1,通过创建视图,将初步截取的信息保存下来

//创建视图,将初步截取的信息保存下来
CREATE VIEW view1 AS 
select  substring(疑点详细说明,charindex('】【',疑点详细说明)+2,23) as name
 from [学前教育].[dbo].[C_08_10_非贫困人员违规领取低保救助金情况]
select  * from view1

得到结果

sql数据库,截取语句(截取每列中的字段)_第2张图片

2,进行详细截取

view1是保存数据的视图,name是视图中的列名

“substring(name,1,charindex('/',name)-1) 姓名 ”  截取姓名并将列名设置为“姓名”

 SELECT substring(name,1,charindex('/',name)-1) 姓名,substring(name,charindex('/',name)+1,charindex('】',name)
 -charindex('/',name)-1) 身份证号 FROM view1;

得到结果,完成

sql数据库,截取语句(截取每列中的字段)_第3张图片

例句:SELECT substring(列名,1,2)  姓名,substring(列名,3,4) 身份证号  FROM view1;

charindex('/',列名)    该列中/所在位置的坐标

 

 

 

 

 

 

 

 

你可能感兴趣的:(数据库)