Ver Mensaje Individual
  #8 (permalink)  
Antiguo 26/07/2012, 14:34
Avatar de Libras
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: Buscar dato en cadena Separada por Comas

ps el caso para la araña lo resolvemos con esto :)

Código SQL:
Ver original
  1. CREATE FUNCTION [dbo].[SplitApplication](@applicationid VARCHAR(2000))  
  2.    
  3. RETURNS @RtnValue TABLE  
  4. (  
  5. Id INT IDENTITY(1,1),  
  6. DATA nvarchar(100)  
  7. )  
  8. AS  
  9. BEGIN  
  10. DECLARE @Cnt INT, @SplitOn nvarchar(5)  
  11. SET @SplitOn = ';'  
  12. SET @Cnt = 1  
  13.  
  14. While (Charindex(@SplitOn,@applicationid)>0)  
  15. BEGIN  
  16. INSERT INTO @RtnValue (DATA)  
  17. SELECT  
  18. DATA = ltrim(rtrim(SUBSTRING(@applicationid,1,Charindex(@SplitOn,@applicationid)-1)))  
  19.  
  20. SET @applicationid = SUBSTRING(@applicationid,Charindex(@SplitOn,@applicationid)+1,len(@applicationid))  
  21. SET @Cnt = @Cnt + 1  
  22. END  
  23.  
  24. INSERT INTO @RtnValue (DATA)  
  25. SELECT DATA = ltrim(rtrim(@applicationid))  
  26.  
  27. RETURN  
  28. END  
  29.  
  30. y usando la funcion que acabamos de crear:
  31.  
  32. DECLARE @valor INT
  33. SELECT @valor=id FROM [SplitApplication]('1;2;;;') WHERE DATA LIKE '%2%'
  34.  
  35. SELECT * FROM [SplitApplication]('20;-60;0;0;0') WHERE id=@valor
  36.  
  37. lo cual nos regresa el famoso -60
  38.  
  39. si se cambia la posicion del numero 2 en la primer cadena entonces cambia el valor del segundo SELECT :) ahora es que nuestro amig@ lo ponga a prueba para sus datos :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me