"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo realizar una unión LIKE en SQL: INSTR, LIKE o CONCAT?

¿Cómo realizar una unión LIKE en SQL: INSTR, LIKE o CONCAT?

Publicado el 2024-11-04
Navegar:274

How to Perform a LIKE Join in SQL: INSTR, LIKE, or CONCAT?

Realizar una unión LIKE en SQL

Al hacer coincidir valores entre dos tablas usando una unión, puede haber casos en los que una columna de una tabla debe coincidir con cualquier parte de una columna de otra tabla. Esto a menudo se logra usando el operador LIKE en la condición de unión.

Supongamos que tiene dos tablas, la Tabla A y la Tabla B, y desea unirlas con la condición de que la columna A en la Tabla A sea "similar". columnaB en la Tabla B. Esto significa que la coincidencia podría incluir el valor completo en la columna B o caracteres antes o después de ella.

Usando INSTR:

Un método es usar la función INSTR() en la condición de unión:

SELECT *
FROM TABLE A
JOIN TABLE B ON INSTR(B.columnB, A.columnA) > 0

Usando LIKE:

Otra opción es usar el operador LIKE con comodines:

SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE '%'  A.columnA  '%'

Usando LIKE con CONCAT:

También puedes concatenar los símbolos comodín con la columna valor usando la función CONCAT():

SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE CONCAT('%', A.columnA ,'%')

Conversión en mayúsculas:

Para garantizar coincidencias que no distingan entre mayúsculas y minúsculas, se recomienda convertir los valores de las columnas a mayúsculas antes de compararlos:

SELECT *
FROM (SELECT UPPER(A.columnA) 'ua' FROM TABLE A) A
JOIN (SELECT UPPER(B.columnB) 'ub' FROM TABLE B) B ON INSTR(B.ub, A.ua) > 0

Consideraciones de eficiencia:

La eficiencia de estos métodos puede variar según la base de datos específica y las estructuras de tablas. Es recomendable verificar el resultado del plan EXPLAIN para determinar el enfoque más óptimo. Los ANSI JOIN utilizan una sintaxis más tradicional. En este caso, la cláusula JOIN es equivalente a la cláusula WHERE en un JOIN que no es ANSI:

SELECT * DE LA TABLA A, TABLA B WHERE INSTR(B.columnB, A.columnA) > 0

El uso de ANSI JOIN ofrece la ventaja de separar la condición de unión de la condición de filtro en la cláusula WHERE.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3