kameibr Posted July 6, 2011 Report Share Posted July 6, 2011 Amigos.Estou com um problema.Preciso contar o número de vezes que aparece o número 160 nesta linha:0x1600006CA87A000000E000000000000016000092A1C8000000E0000000000000160000DB786B000000E00000000000001600001F4282000000E0000000000000160000945A3D000000E00000000000001600009BDE0C000000E000000000000016000028479F000000E00000000000001600001404E6000000E0000000000000Após contar o número 160, preciso que todos os numeros 160 sejam substituidos por FFF .alguém sabe como posso fazer isto?Abraços Quote Link to comment Share on other sites More sharing options...
0 Ricardo T. do Prado Posted July 6, 2011 Report Share Posted July 6, 2011 Ira procurar onde tem H e trocará por Xupdate TABELA set LINHA = REPLACE(LINHA, 'H','X') where ID IN () conta quantos registros tem nessa linha o trecho "160" SELECT LINHA, COUNT(*) FROM TABELA WHERE LINHA LIKE '%160%' GROUP BY LINHAAbs Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted July 6, 2011 Report Share Posted July 6, 2011 Bom dia, O replace está correto para alterar a string, mas o agrupamento não informará quantos 160 aparecem na string. Você terá que fazer um loop para contar quantas vezes o 160 irá aparecer. Poderá utilizar o CHARINDEX do sql. Ele retorna a primeira ocorrência de caracter(es) em uma string. OBS.: o CHARINDEX retorna quando encontrar a primeira ocorrência. Aí q vem o loop para identificar as demais ocorrências, até a string terminar. Faça um contador para ir incrementando toda vez o a função encontrar o(s) caracter(es) desejado(s). Quote Link to comment Share on other sites More sharing options...
0 kameibr Posted July 6, 2011 Author Report Share Posted July 6, 2011 FUlvio.Dai como ficaria o script para isto?Abraços Quote Link to comment Share on other sites More sharing options...
0 fulvio Posted July 6, 2011 Report Share Posted July 6, 2011 Boa tarde, No seu string há 8 ocorrências do 160. Alguns você não colocou em negrito. Segue script. Se não entender pode postar. Seleciona tudo e roda:DECLARE @String VARCHAR(1000) DECLARE @Contador INT SET @Contador = 0 SET @String = '0x1600006CA87A000000E000000000000016000092A1C8000000E0000000000000160000DB786B000000E00000000000001600001F4282000000E0000000000000160000945A3D000000E00000000000001600009BDE0C000000E 000000000000016000028479F000000E00000000000001600001404E6000000E0000000000000' while (SELECT CHARINDEX('160', @String)) > 0 BEGIN SET @Contador = @Contador + 1 SET @String = (SELECT RIGHT (@String, LEN(@String) - (CHARINDEX('160', @String))-2)) END SELECT @Contador Quote Link to comment Share on other sites More sharing options...
Question
kameibr
Amigos.
Estou com um problema.
Preciso contar o número de vezes que aparece o número 160 nesta linha:
0x1600006CA87A000000E000000000000016000092A1C8000000E0000000000000160000DB786B000000E00000000000001600001F4282000000E0000000000000160000945A3D000000E00000000000001600009BDE0C000000E000000000000016000028479F000000E00000000000001600001404E6000000E0000000000000
Após contar o número 160, preciso que todos os numeros 160 sejam substituidos por FFF .
alguém sabe como posso fazer isto?
Abraços
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.