我有一些T-SQL代码可从SQL Server表中提取信息。我需要解析一列并根据以下结果集显示。我很喜欢SQL,如果您不标记为重复并告诉我如何做,那将是很棒的。
可以帮忙吗?
SELECT Account, CTSFirm, AccountName, BOCodeGMI
FROM StagingEDFACRRBO
BOCodeGMI
列包含:
e=01:c=KW:m=10000
c=C-:e=01:m=10000
c=S-:e=01:m=10000
c=06:e=01:m=10
c=07:e=01:m=100
c=W-:e=01:M=10000
拆分BOCodeGMI
并显示两个单独的列BOCodeGMI_1
和BOCodeGMI_2
的逻辑:
如果字符串包含e=
,则显示BOCodeGMI_1
作为其对应值(例如:01
);如果字符串不包含e=
,则显示{ {1}}为NULL
如果字符串包含BOCodeGMI_1
,则显示c=
作为其对应值(例如:BOCodeGMI_2
);如果字符串不包含C-
,则显示{{ 1}}为NULL
最后这就是它的显示方式-
c=
答案 0 :(得分:1)
SELECT
BOCodeGMI,
CASE
WHEN CHARINDEX('e=', BOCodeGMI) > 0
THEN SUBSTRING (BOCodeGMI, CHARINDEX('e=', BOCodeGMI) + 2 , 2)
END as BOCodeGMI_1,
CASE
WHEN CHARINDEX('c=', BOCodeGMI) > 0
THEN SUBSTRING (BOCodeGMI, CHARINDEX('c=', BOCodeGMI) + 2, 2)
END as BOCodeGMI_2
FROM
tableName
CASE
检查条件并返回值。
CHARINDEX
在字符串中搜索子字符串,然后返回位置。
SUBSTRING
从字符串中提取一些字符。