Извлечь данные из строки SQL - PullRequest
0 голосов
/ 01 мая 2018

У меня есть следующие данные в столбце. Я хочу извлечь оценку «Соответствующие данные», показав только 542. Проблема в том, что оценка может также быть длиной более 3 символов. Может кто-нибудь помочь?

 MatchingDetails score="542" maxScore="-96" matchRule="abcdef"><rule name="Person_Forename" score="279" /><rule name="Person_Surname" score="263"

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Если ваши данные представляют собой строку XML, возможно, что-то вроде этого

Пример (исправлено xml)

Declare @S varchar(max) = '
<MatchingDetails score="542" maxScore="-96" matchRule="abcdef" >
    <rule name="Person_Forename" score="279"></rule>
    <rule name="Person_Surname" score="263"></rule>
</MatchingDetails>
'

Select convert(xml,@S).value('MatchingDetails[1]/@score','int')

Returns

542
0 голосов
/ 01 мая 2018

Один способ - использовать комбинацию charindex, patindex и substring:

DECLARE @S varchar(100) = 'MatchingDetails score="542" maxScore="-96" matchRule="abcdef">'


SELECT SUBSTRING(@S, 
                 patindex('% score="%', @S) + 8,
                 charindex('"', @S, patindex('% score="%', @S) + 9) - patindex('% score="%', @S) - 8)

Результат:

542
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...