Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Comparar campo que tiene ceros a la izquierda

Estas en el tema de Comparar campo que tiene ceros a la izquierda en el foro de SQL Server en Foros del Web. Buen dia gente! Tengo que comparar dos campos de distintas tablas, los dos estan definidos como char 8, y el valor es un id, que ...
  #1 (permalink)  
Antiguo 15/03/2012, 06:32
 
Fecha de Ingreso: junio-2005
Mensajes: 337
Antigüedad: 18 años, 10 meses
Puntos: 1
Comparar campo que tiene ceros a la izquierda

Buen dia gente!

Tengo que comparar dos campos de distintas tablas, los dos estan definidos como char 8, y el valor es un id, que en una de las tablas tiene cero delante para completar los 8 caracteres y la otra no

por ejemplo en una tengo 00052052 y en la otra 52052.

Hay alguna forma de que pueda compararlos?

Muchisimas gracias!

un beso,

Laura
  #2 (permalink)  
Antiguo 15/03/2012, 12:05
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Comparar campo que tiene ceros a la izquierda

sip con un like
Código SQL:
Ver original
  1. CREATE TABLE #tempo
  2. (
  3. dato VARCHAR(10)
  4. )
  5.  
  6. CREATE TABLE #tempo1
  7. (
  8. dato VARCHAR(10)
  9. )
  10.  
  11. INSERT INTO #tempo VALUES ('00052052')
  12. INSERT INTO #tempo VALUES ('000052052')
  13. INSERT INTO #tempo1 VALUES ('52052')
  14. INSERT INTO #tempo1 VALUES ('52053')
  15.  
  16. SELECT * FROM #tempo t1 ,#tempo1 t2
  17. WHERE t1.dato LIKE '%' + t2.dato + '%'

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 15/03/2012, 15:35
 
Fecha de Ingreso: febrero-2012
Mensajes: 75
Antigüedad: 12 años, 2 meses
Puntos: 6
Respuesta: Comparar campo que tiene ceros a la izquierda

La respuesta es buena pero en la línea 17 tienes un problema

Si tienes:

00052052
52052
00520524
33520524
ab52052c

Te los cogerá todos como iguales

Puedes embolicarte un poco transformando los dos datos a valores numericos tipo entero y compararlos después de la consulta para evitar los datos arriba mostrados
__________________
Si quieres conseguir resultados diferentes no hagas siempre lo mismo.

Mejora tu entorno. MestralCadiz con su comunidad.
  #4 (permalink)  
Antiguo 15/03/2012, 15:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Comparar campo que tiene ceros a la izquierda

si le quitas el % del primer like puede funcionar siempre y cuando como se menciona los 0's esten al inicio de la cadena, ademas lo que puse es solo una idea para resolver el problema puede haber mas como la que mencionas, y creo que tambien depende del usuario que pregunta como lo adecue a su problema.

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 16/03/2012, 01:53
 
Fecha de Ingreso: febrero-2012
Mensajes: 75
Antigüedad: 12 años, 2 meses
Puntos: 6
Respuesta: Comparar campo que tiene ceros a la izquierda

Cita:
Iniciado por Libras Ver Mensaje
si le quitas el % del primer like puede funcionar siempre y cuando como se menciona los 0's esten al inicio de la cadena, ademas lo que puse es solo una idea para resolver el problema puede haber mas como la que mencionas, y creo que tambien depende del usuario que pregunta como lo adecue a su problema.

Saludos!
Yo uso tu solución, pero luego impongo la condición. Para mi es lo más fácil, hacer lo que tu dices e imponer un if antes de "pintar".
__________________
Si quieres conseguir resultados diferentes no hagas siempre lo mismo.

Mejora tu entorno. MestralCadiz con su comunidad.

Etiquetas: izquierda, tabla, campos, cero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:54.