Boas.
Nunca vi nem ouvi falar de caracteres terminadores em sql. Se puderes mete lá aí uns exemplos do texto original que é guardado no campo mMsgContent.
O texto Original, é algo deste Genero:
Envio de um Ficheiro SAT pela empresa XPTO com o
contrato XPTO nº 123456 para o dia 2006.12.29.
Nome Ficheiro: 83762527_0010.0017208267_1167319686488_1853768
Total Registos: 77
Valor Total: 54497.11
Conta: 1234567890
Cumps!
SELECT
sum(convert(float,
substring (mMsgContent,
charindex ('Total Registos', mMsgContent) + 16,
charindex ('Valor Total', mMsgContent) - charindex ('Total Registos', mMsgContent) - 16)
))
from tblevent
Ah, mas esse \n vem no texto, não é o ms sql que o lá meteu. isso não deve dár problemas. Vamos lá ver o seguinte, tu tens:
BLA BLA Total Registos: 77 Valor Total: 54497.11 BLA BLA
............x...................!.....y
...............................x+16
posição x = charindex ('total registos', mMsgContent)
posição y = charindex ('Valor Total', mMsgContent)
portanto o que queres é o que está entre a posição x+16 e y, logo:
substring (mMsgContent, x + 16, y - x - 16 )
o que dá:
substring (mMsgContent,
charindex ('total registos', mMsgContent) + 16 ,
charindex ('Valor Total', mMsgContent) - charindex ('total registos', mMsgContent) - 16)
o que aplicando ao que já temos dá:
Código:SELECT sum(convert(float, substring (mMsgContent, charindex ('Total Registos', mMsgContent) + 16, charindex ('Valor Total', mMsgContent) - charindex ('Total Registos', mMsgContent) - 16) )) from tblevent
tenta lá assim.
experimenta lá assim:
Código:SELECT sum(convert(float, substring (mMsgContent, charindex ('Total Registos', mMsgContent) + 16, charindex ('Valor Total', mMsgContent) - charindex ('Total Registos', mMsgContent) - 17) )) from tblevent
Acho que com esta já deve dár.
Código:SELECT sum(convert(float, replace( substring (mMsgContent, charindex ('Total Registos', mMsgContent) + 16, charindex ('Valor Total', mMsgContent) - charindex ('Total Registos', mMsgContent) - 17) ,char(13),''))) from tblevent