La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Composición de Una Tabla de Números a Partir de Una Lista de Números Separada por Comas en Transact SQL Leonel Morales Díaz Ingeniería Simple

Presentaciones similares


Presentación del tema: "Composición de Una Tabla de Números a Partir de Una Lista de Números Separada por Comas en Transact SQL Leonel Morales Díaz Ingeniería Simple"— Transcripción de la presentación:

1 Composición de Una Tabla de Números a Partir de Una Lista de Números Separada por Comas en Transact SQL Leonel Morales Díaz Ingeniería Simple leonel@ingenieriasimple.com Copyright 2008 by Leonel Morales Díaz – Ingeniería Simple. Derechos reservados Disponible en: http://www.ingenieriasimple.com/TSQL

2 Requerimientos Dada una lista de números separada por comas –54, 82, 61, 33, 87, 956, 657 Componer una tabla con esos números

3 Función en Transact SQL Maneja el caso trivial: –Lista vacía Prevé listas con repetidos Create Function SeleInts (@Cuales nVarChar(Max) ) Returns @Ints Table (UnInt Int Primary Key) As Begin Declare @TmpCuales nVarChar(Max) Set @TmpCuales = IsNull(@Cuales,'') + ',' Declare @TmpInts Table (UnInt Int) Declare @Posi Int Set @Posi = 0 Declare @NPosi Int Set @NPosi = CharIndex(',',@TmpCuales) While @NPosi > 0 Begin If @NPosi - @Posi > 1 Insert Into @TmpInts Values (Cast(SubString(@TmpCuales,@Posi + 1,@NPosi - @Posi - 1) As Int)) Set @Posi = @NPosi Set @NPosi = CharIndex(',',@TmpCuales,@Posi+1) End Insert Into @Ints Select Distinct * From @TmpInts Return End

4 Ejemplo de Uso Select * From dbo.SeleInts('54, 82, 61, 33, 87, 956, 80, 0, 61, -9, 61, 657') UnInt ----------- -9 0 33 54 61 80 82 87 657 956 (10 row(s) affected)

5 Variante Permitir números de punto flotante Create Function SeleFloats (@Cuales nVarChar(Max) ) Returns @Floats Table (UnFloat Float Primary Key) As Begin Declare @TmpCuales nVarChar(Max) Set @TmpCuales = IsNull(@Cuales,'') + ',' Declare @TmpFloats Table (UnFloat Float) Declare @Posi Int Set @Posi = 0 Declare @NPosi Int Set @NPosi = CharIndex(',',@TmpCuales) While @NPosi > 0 Begin If @NPosi - @Posi > 1 Insert Into @TmpFloats Values (Cast(SubString(@TmpCuales,@Posi + 1,@NPosi - @Posi - 1) As Float)) Set @Posi = @NPosi Set @NPosi = CharIndex(',',@TmpCuales,@Posi+1) End Insert Into @Floats Select Distinct * From @TmpFloats Return End


Descargar ppt "Composición de Una Tabla de Números a Partir de Una Lista de Números Separada por Comas en Transact SQL Leonel Morales Díaz Ingeniería Simple"

Presentaciones similares


Anuncios Google