Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

contar letras en especifico

Estas en el tema de contar letras en especifico en el foro de Mysql en Foros del Web. Hola que tal, he estado un poco dolor de cabeza para sacar un dato, mi necesidad es saber cuantas veces se repite un letra en ...
  #1 (permalink)  
Antiguo 13/08/2015, 12:44
Avatar de gerardo_goh  
Fecha de Ingreso: noviembre-2008
Mensajes: 107
Antigüedad: 16 años
Puntos: 1
contar letras en especifico

Hola que tal, he estado un poco dolor de cabeza para sacar un dato, mi necesidad es saber cuantas veces se repite un letra en especifico dentro de un texto, pongo mi ejemplo
texto=S-S-S cantidad de "S" en el texto: 3
  #2 (permalink)  
Antiguo 13/08/2015, 12:48
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: contar letras en especifico

http://stackoverflow.com/questions/1...-varchar-field
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 13/08/2015, 12:59
Avatar de gerardo_goh  
Fecha de Ingreso: noviembre-2008
Mensajes: 107
Antigüedad: 16 años
Puntos: 1
Respuesta: contar letras en especifico

lo voy a checar y en un momento pongo mi resultado, saludos!!!!



[HIGHLIGHT="MySQL"]create table tblejemplo (cliente varchar(50) not null,
tipo_de_pago varchar(10) not null,
fec_pago date not null);

Código MySQL:
Ver original
  1. insert  into tblejemplo values ('8885','S','2015/01/01');
  2. insert  into tblejemplo values ('8885','S','2015/01/01');
  3. insert  into tblejemplo values ('8885','S','2015/01/01');
  4. insert  into tblejemplo values ('8885','S','2015/01/01');
  5.  
  6. insert  into tblejemplo values ('1111','S','2015/01/02');
  7. insert  into tblejemplo values ('1111','B','2015/01/02');
  8. insert  into tblejemplo values ('1111','B','2015/01/02');



Código MySQL:
Ver original
  1. select * from tblejemplo;
  2.  
  3.  
  4. select cliente,
  5.        group_concat(tipo_de_pago separator '-')as 'pagos S',
  6.        round(count(LENGTH(tipo_de_pago) - LENGTH(replace(tipo_de_pago, 'S', '')))/LENGTH('S'),0)as total
  7. from tblejemplo
  8. group by cliente;


me da otro resultado


Código MySQL:
Ver original
  1. cliente pagos S   total
  2. -------------------------------------
  3. 1111    S-B-B               3
  4. 8885    S-S-S-S            4


y quiero que salga el siguiente resultado
cliente 1111 tipo de pago S Total:1
cliente 8885 tipo de pago S total: 4

Última edición por gerardo_goh; 13/08/2015 a las 16:22
  #4 (permalink)  
Antiguo 17/08/2015, 17:38
Avatar de gerardo_goh  
Fecha de Ingreso: noviembre-2008
Mensajes: 107
Antigüedad: 16 años
Puntos: 1
Respuesta: contar letras en especifico

Cita:
Iniciado por gerardo_goh Ver Mensaje
lo voy a checar y en un momento pongo mi resultado, saludos!!!!
Alguien me puede ayudar, muchas gracias, Saludos!!!
  #5 (permalink)  
Antiguo 17/08/2015, 18:33
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: contar letras en especifico

si tus datos estan asi no ocupas la funcion que te pase con un case lo obtienes:

Ojo: la parte del case es con SQL SERVER
Código SQL:
Ver original
  1. CREATE TABLE #tblejemplo (cliente VARCHAR(50) NOT NULL,
  2. tipo_de_pago VARCHAR(10) NOT NULL,
  3. fec_pago DATE NOT NULL);
  4.  
  5. INSERT  INTO #tblejemplo VALUES ('8885','S','2015/01/01');
  6. INSERT  INTO #tblejemplo VALUES ('8885','S','2015/01/01');
  7. INSERT  INTO #tblejemplo VALUES ('8885','S','2015/01/01');
  8. INSERT  INTO #tblejemplo VALUES ('8885','S','2015/01/01');
  9.  
  10. INSERT  INTO #tblejemplo VALUES ('1111','S','2015/01/02');
  11. INSERT  INTO #tblejemplo VALUES ('1111','B','2015/01/02');
  12. INSERT  INTO #tblejemplo VALUES ('1111','B','2015/01/02');
  13.  
  14. SELECT * FROM(
  15. SELECT cliente,
  16.        group_concat(tipo_de_pago separator '-')AS 'pagos S',      
  17. FROM tblejemplo
  18. GROUP BY cliente) AS t1
  19. LEFT JOIN(
  20.  
  21. SELECT SUM(total) total, cliente,fec_pago FROM(
  22. SELECT CASE WHEN tipo_de_pago='S' THEN 1 ELSE 0 END AS total, cliente, tipo_de_pago,fec_pago FROM #tblejemplo) AS t1 GROUP BY cliente,fec_pago
  23.  
  24. ) AS t2 ON (t1.cliente=t2.cliente)

o la otra es que primero hagas esto:

Código MySQL:
Ver original
  1. select round(count(LENGTH(pagos S) - LENGTH(replace(pagos S, 'S', '')))/LENGTH('S'),0)as total, cliente from(
  2. select cliente,
  3.        group_concat(tipo_de_pago separator '-')as 'pagos S',      
  4. from tblejemplo
  5. group by cliente) as t1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: especifico, letras
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:18.