sql - tablas - comparar dos columnas en excel y resaltar repetidos
Compara columnas donde una es similar a una parte de otra (7)
Cambie los argumentos a LIKE
en la cláusula WHERE
:
SELECT ID, FullName, FirstName
FROM tblNames
WHERE Fullname not like ''%'' + FirstName + ''%''
El comodín debe ser el segundo argumento.
Estoy tratando de escribir una declaración Select donde pueda ver si una columna es como parte de otra.
tblNames
ID FullName FirstName
1 Mr. John Doe, CEO John
2 Mr. Jake Doe, Exec Jake
3 Mrs. Betty Smith, Chair Jill
La consulta debe devolver:
3 | Mrs.Betty Smith, Chair | Jill
Sin embargo el mío simplemente devuelve cada fila en la tabla:
SELECT ID, FullName, FirstName
FROM tblNames
WHERE ''%'' + FirstName + ''%'' not like Fullname
¿Algunas ideas?
Esto funcionó para mí:
SELECT *
FROM `table`
WHERE `col1` NOT LIKE CONCAT(''%'', `col2`, ''%'')
Lo encontré aquí: http://www.edmondscommerce.co.uk/mysql/compare-two-columns-in-mysql/
De alguna manera solo funcionó correctamente con la función concat (?).
Invertir el dónde, a algo como esto:
Fullname not like ''%'' + FirstName + ''%''
Los paréntesis también habrían solucionado el problema.
SELECT ID, FullName, FirstName
FROM tblNames
WHERE (''%'' + FirstName + ''%'') not like Fullname
Oracle espera un número cuando se usa +. Para la cuerda, por favor use el samle a continuación:
SELECT ID, FullName, FirstName
FROM tblNames
WHERE FullName like ''%'' || FirstName||''%''
Para comparar una columna de una tabla con una columna de otra tabla, haga lo siguiente
select a.*,table_2_col_1, table_2_col_2 from (select table_1_col_1, table_1_col_2 from table_1 where
) a, table_2 where table_1_col_1 like ''%'' || table_2_col_1 ||''%''
Prueba esto:
SELECT * FROM tblNames
WHERE ISNULL( CHARINDEX (FirstName , FullName),0) = 0
CHARINDEX será más rápido (más eficaz) que una cláusula LIKE, ya que no tiene que tener en cuenta los comodines. Los datos de muestra anteriores con un pequeño número de filas no mostrarán un beneficio de rendimiento, pero cuando en los millones de filas, CHARINDEX obtendría mejores resultados.
Se ve bien, excepto que probablemente quieras cambiar el orden en tu ubicación:
WHERE Fullname not like ''%'' + FirstName + ''%''