«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как выполнить соединение LIKE в SQL: INSTR, LIKE или CONCAT?

Как выполнить соединение LIKE в SQL: INSTR, LIKE или CONCAT?

Опубликовано 4 ноября 2024 г.
Просматривать:424

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

Выполнение соединения LIKE в SQL

При сопоставлении значений между двумя таблицами с помощью соединения могут быть случаи, когда столбец из одной таблицы должно соответствовать любой части столбца из другой таблицы. Это часто достигается с помощью оператора LIKE в условии соединения.

Предположим, у вас есть две таблицы, таблица A и таблица B, и вы хотите соединить их при условии, что столбец A в таблице A имеет значение «like». columnsB в таблице B. Это означает, что совпадение может включать в себя полное значение в столбце B или символы до или после него.

Использование INSTR:

Один метод — использовать функция INSTR() в условии соединения:

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

Использование LIKE:

Другой вариант — использовать оператор LIKE с подстановочными знаками:

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

Использование LIKE с CONCAT:

Вы также можете объединить подстановочные знаки со столбцом значение с помощью функции CONCAT():

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

Преобразование в верхний регистр:

Чтобы обеспечить совпадения без учета регистра, перед сравнением рекомендуется преобразовать значения столбцов в верхний регистр:

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

Соображения эффективности:

Эффективность этих методов может варьироваться в зависимости от конкретной базы данных и структуры таблиц. Рекомендуется проверить выходные данные плана EXPLAIN, чтобы определить наиболее оптимальный подход. ANSI JOIN использует более традиционный синтаксис. В этом случае предложение JOIN эквивалентно предложению WHERE в JOIN, отличном от ANSI:

SELECT * ИЗ ТАБЛИЦЫ А, ТАБЛИЦА Б WHERE INSTR(B.columnB, A.columnA) > 0

Использование ANSI JOIN дает преимущество отделения условия соединения от условия фильтра в предложении WHERE.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3