SQL - 为 1 个字段组合 2 个提取函数
SQL - Combining 2 Extracting Functions for 1 field
我有一个包含用户配置文件的字符串,其中数据的第一部分始终相同,第二部分数据始终可变。
我需要提取中间部分
字符串示例;
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)
试试这个答案:
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
像这样将 (2)
作为 (1)
的第一个参数(为子字符串长度设置一个合理的高值):
select SUBSTRING(LEFT(@MyField, CHARINDEX(',XX', @MyField) - 1),5, 1000);
您可以同时使用这两个函数来生成您的结果
SELECT substring(MyField, 5, charindex('XX', MyField, 1)-2)
我有一个包含用户配置文件的字符串,其中数据的第一部分始终相同,第二部分数据始终可变。 我需要提取中间部分
字符串示例;
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)
试试这个答案:
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
像这样将 (2)
作为 (1)
的第一个参数(为子字符串长度设置一个合理的高值):
select SUBSTRING(LEFT(@MyField, CHARINDEX(',XX', @MyField) - 1),5, 1000);
您可以同时使用这两个函数来生成您的结果
SELECT substring(MyField, 5, charindex('XX', MyField, 1)-2)