Sql server 解析字符串sql的子字符串
我有一个表,其中列数据如下:Sql server 解析字符串sql的子字符串,sql-server,Sql Server,我有一个表,其中列数据如下: MASTERDATA-8.009.9.9.1 CHILDDATA-9.007.1.1.1 MASTERDATA-2.003.1.1.2 我希望输出为两列: COlumn1 Column2 MASTERDATA.009 8.9.9.1 CHILDDATA.007 9.1.1.1 MASTERDATA.003 2.1.1.2 示例表脚本: Cr
MASTERDATA-8.009.9.9.1
CHILDDATA-9.007.1.1.1
MASTERDATA-2.003.1.1.2
我希望输出为两列:
COlumn1 Column2
MASTERDATA.009 8.9.9.1
CHILDDATA.007 9.1.1.1
MASTERDATA.003 2.1.1.2
示例表脚本:
Create Table ParseData
(
ColumnToParse Varchar(50)
)
Insert into ParseData values('MASTERDATA-8.009.9.9.1')
Insert into ParseData values('CHILDDATA-9.007.1.1.1')
Insert into ParseData values('MASTERDATA-2.003.1.1.2')
对于简单的解析,请使用:
雷克斯测试仪:
结果:
+----------------+---------+
| column1 | column2 |
+----------------+---------+
| MASTERDATA.009 | 8.9.9.1 |
| CHILDDATA.007 | 9.1.1.1 |
| MASTERDATA.003 | 2.1.1.2 |
+----------------+---------+
考虑到所有记录的格式相似。下面是使用字符串函数的一种方法
SELECT column1 = LEFT(ColumnToParse, Charindex('-', ColumnToParse) - 1)
+ Substring(ColumnToParse, Charindex('.', ColumnToParse), Charindex('.', ColumnToParse, Charindex('.', ColumnToParse)+1 ) - Charindex('.', ColumnToParse) ),
column2 = Substring(ColumnToParse, Charindex('-', ColumnToParse)+1, Charindex('.', ColumnToParse) - Charindex('-', ColumnToParse) )
+ RIGHT(ColumnToParse, Len(ColumnToParse)- Charindex('.', ColumnToParse, Charindex('.', ColumnToParse)+1 ))
FROM ParseData
select left(ColumnToParse, CHARINDEX('-', ColumnToParse) ) +
substring(columntoparse, CHARINDEX('-', ColumnToParse)+1,5) as Column1
, right(replace(columntoparse,substring(columntoparse,
CHARINDEX('-', ColumnToParse)+2,4),''),7) as Column2
from ParseData
SELECT column1 = LEFT(ColumnToParse, Charindex('-', ColumnToParse) - 1)
+ Substring(ColumnToParse, Charindex('.', ColumnToParse), Charindex('.', ColumnToParse, Charindex('.', ColumnToParse)+1 ) - Charindex('.', ColumnToParse) ),
column2 = Substring(ColumnToParse, Charindex('-', ColumnToParse)+1, Charindex('.', ColumnToParse) - Charindex('-', ColumnToParse) )
+ RIGHT(ColumnToParse, Len(ColumnToParse)- Charindex('.', ColumnToParse, Charindex('.', ColumnToParse)+1 ))
FROM ParseData