Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/02/2011, 10:34
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Comparacion de una concatenacion

Hola proteus8:

Poco hay que agregar al comentario que te hace el compañero iislas, estoy completamente de acuerdo en que es mejor utilizar el operador EXISTS. Sólo habría que complementar que la forma en que está comparando los registros (es decir con el operador + para concatenar) es válido sólo entre campos de tipo caracter. Es posible que en tu tabla tengas tanto campos tipo caracter como campos tipo numérico por lo tanto tendrías que aplicar conversiones o en su defecto comparar campo por campo, es decir algo como esto:

Código SQL:
Ver original
  1. DECLARE @TablaUno TABLE (id INT, descripcion VARCHAR(50))
  2. INSERT INTO @TablaUno VALUES (1, 'UNO')
  3. INSERT INTO @TablaUno VALUES (2, 'DOS')
  4. INSERT INTO @TablaUno VALUES (3, 'TRES')
  5. SELECT * FROM @TablaUno
  6.  
  7. DECLARE @TablaDos TABLE (id INT, descripcion VARCHAR(50))
  8. INSERT INTO @TablaDos VALUES (3, 'TRES')
  9. INSERT INTO @TablaDos VALUES (4, 'CUATRO')
  10. INSERT INTO @TablaDos VALUES (5, 'CINCO')
  11.  
  12. --Comparando campo por campo
  13. DELETE @TablaUno FROM @TablaUno T1
  14. WHERE EXISTS (
  15. SELECT * FROM @TablaDos T2 WHERE T1.id = T2.id AND T1.descripcion = T2.descripcion
  16. )
  17. SELECT * FROM @TablaUno
  18.  
  19. --Aplicando conversión de tipos
  20. DELETE @TablaUno FROM @TablaUno T1
  21. WHERE EXISTS (
  22. SELECT * FROM @TablaDos T2 WHERE CAST(T1.id AS VARCHAR) + T1.descripcion =
  23. CAST(T2.id AS VARCHAR) + T2.descripcion
  24. )
  25. SELECT * FROM @TablaUno

Te repito que es sólo un detalle que hay que considerar.

Saludos
Leo.