FOROS DE INFORMATICA
Noticias: Habilitada la opción de Karma para usuarios con más de 50 mensajes
 
*
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
Mayo 28, 2020, 02:32:05


Ingresar con nombre de usuario, contraseña y duración de la sesión


Páginas: [1]
  Imprimir  
Autor Tema: Utilidades  (Leído 5256 veces)
Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« : Septiembre 19, 2007, 08:44:32 »

En este post voy a ir subiendo utilidades sobre Sql Server. Espero que os sirva de ayuda.

Un saludo
En línea

Etereo
Global Moderator
Habitante
*****

Karma:9
Desconectado Desconectado

Mensajes: 2374



« Respuesta #1 : Septiembre 19, 2007, 09:02:07 »

CREATE Function [dbo].[F_SPLIT](
   @InputText Varchar(4000), -- El texto que se va a separar en filas
   @Delimiter Varchar(10)) -- El separador o delimitador que va a separar el texto
                           -- Pueden ser uno o varios caracteres o el valor nulo


RETURNS @Array TABLE (
   TokenID Int PRIMARY KEY IDENTITY(1,1), --Comenta esta línea si no quieres una columna identidad en la tabla
   Value Varchar(4000))

AS

-----------------------------------------------------------
-- Función Split                                        --
--    • Devuelve una tabla donde se encuentran las filas correspondientes a cada una de las partes en que se separó la cadena--
-----------------------------------------------------------


BEGIN

   DECLARE
      @Pos Int,        -- Comienzo del carácter o caracteres
      @End Int,        -- Fin del carácter o caracteres
      @TextLength Int, -- Tamaño del texto pasado por parámetro
      @DelimLength Int -- Tamaño del delimitador


   SET @TextLength = DataLength(@InputText)

-- Salimos de la función si el tamaño del texto es cero
   IF @TextLength = 0 RETURN

   SET @Pos = 1
   SET @DelimLength = DataLength(@Delimiter)

   IF @DelimLength = 0 BEGIN -- Si el tamaño del delimitador es cero entonces cada carácter en una fila
      WHILE @Pos <= @TextLength BEGIN
         INSERT @Array (Value) VALUES (SubString(@InputText,@Pos,1))
         SET @Pos = @Pos + 1
      END
   END
   ELSE BEGIN
      -- Se añade el delimitador para ver el último elemento
      SET @InputText = @InputText + @Delimiter
      -- Busca el último carácter del primer elemento
      SET @End = CharIndex(@Delimiter, @InputText)
      WHILE @End > 0 BEGIN
         -- Si @End es mayor que cero se ha encontrado un delimitador y por lo tanto otro elemento
         INSERT @Array (Value) VALUES (SubString(@InputText, @Pos, @End - @Pos))
         -- Se establece la siguiente búsqueda al inicio del final del anterior elemento
         SET @Pos = @End + @DelimLength
         -- Se busca el último carácter del siguiente elemento
         SET @End = CharIndex(@Delimiter, @InputText, @Pos)
      END
   END
   
   RETURN

END
En línea

Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.13 | SMF © 2006-2009, Simple Machines LLC

XHTML 1.0 válido! CSS válido! Dilber MC Theme by HarzeM