Использование Substring / CharIndex - PullRequest
0 голосов
/ 24 апреля 2019

Мне нужно извлечь текст из «нечистого» поля в нашей базе данных. Кто-нибудь знает, как извлечь из приведенных ниже примеров только: «слишком высокая ежедневная нагрузка» ?

Order: T001.1<br />Rejection Reason: Meter Read Rejected: daily usage too high<br /><br /><a href='http://********?ProfileId=111111&AccountId=22222&ProductId=11111&MeterId=11111'>Link to page</a>

Другой пример:

<b>Order: </b>Notification<br /><b>Rejection Reason: </b>Meter Read Rejected: daily usage too high<br /><br /><br /><a href='http://********ProfileId=11111&AccountId=11111&ContractId=1111&WaterId=2222&MeterId=22222&MOT=true'>Meter page</a>

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019

Вы можете найти строку 'Meter Read Rejected' и принять значение после этого:

select left(v.str, patindex('%[^0-9a-zA-Z ]%', v.str) - 1)
from (values ('Order: T001.1<br />Rejection Reason: Meter Read Rejected: daily usage too high<br /><br /><a href=''http://********?ProfileId=111111&AccountId=22222&ProductId=11111&MeterId=11111''>Link to page</a>'),
             ('<b>Order: </b>Notification<br /><b>Rejection Reason: </b>Meter Read Rejected: daily usage too high<br /><br /><br /><a href=''http://********ProfileId=11111&AccountId=11111&ContractId=1111&WaterId=2222&MeterId=22222&MOT=true''>Meter page</a>')
     ) s(str) cross apply
     (values (stuff(s.str, 1, charindex('Meter Read Rejected: ', s.str) + 20, ''))) v(str)
0 голосов
/ 24 апреля 2019

Я предполагаю, что вы хотите найти значение между 3-м вхождением : и <br>

Если это так, вы можете использовать Stuff с cross apply.Здесь cross apply необходимо, чтобы найти 3-е вхождение :

SELECT 
SUBSTRING(STUFF(texi, 1, CHARINDEX(':',texi,P3.pos), ''), 0, 
          CHARINDEX('<', STUFF(texi, 1, CHARINDEX(':',texi,P3.pos), ''))) as mystring
from test
cross apply (select (CHARINDEX(':',texi))) as P1(Pos)
cross apply (select (CHARINDEX(':',texi, P1.Pos+1))) as P2(Pos)
cross apply (select (CHARINDEX(':',texi, P2.Pos+1))) as P3(Pos)

ПРОВЕРЬТЕ ДЕМО ЗДЕСЬ

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