Bueno, tuve un problema el día de ayer. Como parte del desarrollo de un algoritmo que permita cambiar de posición las palabras dentro de una cadena, me es indispensable saber cuantos espacios contiene la misma. Es decir, la siguiente cadena contiene 8 espacios: 'Vi una luz y escuche una voz en silencio'. Verdad!
Muy bien, ahora pasemos a la solución y desarrollo del mismo:
Código SQL:
Ver original
CREATE FUNCTION fnContarEspaciosEnBlanco (@Cadena VARCHAR(MAX)) RETURNS INT AS BEGIN -- variables DECLARE @COUNT INT, @IndexInicial INT, @IndexFinal INT, @Flag bit -- inicializacion SET @Flag = 'TRUE' SET @IndexInicial = 1 SET @IndexFinal = 0; SET @COUNT= -1; -- contador de espacios while (@Flag = 'TRUE') BEGIN SET @IndexFinal = ( SELECT CHARINDEX(' ', @Cadena, @IndexInicial )) SET @COUNT += 1 SET @IndexInicial = @IndexFinal+1 IF @IndexFinal = 0 SET @Flag = 'FALSE' END -- retorno del resultado RETURN @COUNT END