SQL - 为1个字段

时间:2018-01-23 08:48:40

标签: sql substring charindex

我有一个包含用户配置文件的字符串,其中数据的第一部分始终相同,第二部分数据始终是可变的。 我需要提取midle部分

字符串示例;

ABC_01_Operator ,XX=ALPHABET-XYZ
ABC_07_Admin ,XX=ALPHABET-XYZ

我想提取的数据:

01_Operator
07_Admin

我有2个提取部分的函数,但我找不到合并它们的方法

1) SUBSTRING (MyField, 5, 12) to start from 01 / 07
2) LEFT(MyField, CHARINDEX(',XX', MyField) - 1)

3 个答案:

答案 0 :(得分:0)

试试这个答案:

DECLARE @MyField VARCHAR(100)='ABC_01_Operator ,XX=ALPHABET-XYZ'

SELECT RIGHT(LEFT(@MyField, CHARINDEX(',XX', @MyField) - 1)
    ,LEN(LEFT(@MyField, CHARINDEX(',XX', @MyField) - 1))-3)

<强>结果:

01_Operator 
07_Admin 

答案 1 :(得分:0)

(2)作为此(1)的第一个参数(为子字符串长度设置一个相当高的值):

select SUBSTRING(LEFT(@MyField, CHARINDEX(',XX', @MyField) - 1),5, 1000);

答案 2 :(得分:0)

您可以同时使用这两个功能来生成结果

SELECT substring(MyField, 5, charindex('XX', MyField, 1)-2)