Выполнение соединения 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