Соответствие строковому образцу в sql

0

Пожалуйста, помогите мне написать общий SQL-запрос для следующих сценариев. Основываясь на данных в таблице 2, выход определяется. Для Eg1, если AB * присутствует в таблице 2, результатом будет AB01, AB02. Eg2 - AB02 присутствует в таблице 2, только выход AB02 в выходе Eg3 - * присутствует в таблице 2, все данные в таблице 1 представлены на выходе

Сценарий 1

Table1  
AB01  
AB02  
BE01  
GH01  

Table2  
AB*

Output  
AB01  
AB02 

Scenario 2

Table1  
AB01  
AB02  
BE01  
GH01  

Table2  
AB02

Output   
AB02

Сценарий 3

Table1

AB01  
AB02  
BE01  
GH01  

Table2  
*

Output  
AB01  
AB02  
BE01  
GH01  
  • 2
    Это не имеет большого смысла. Похоже, вы пытаетесь сохранить правила в базе данных о том, как объединить две таблицы вместе. Это кричит о плохом дизайне и требует использования динамического SQL. Возможно, если вы поделитесь некоторыми четкими деталями, это будет более очевидно, что вы хотите. Вот отличное место для начала. spaghettidba.com/2015/04/24/...
  • 0
    mysql mysql @ B001
Теги:
pattern-matching

2 ответа

0

Используйте rlike при перекрестном соединении между таблицами:

select * 
  from table1 t1, table2 t2
  where t1.col1 rlike t2.col2;

Вам может потребоваться настроить ваши выражения в таблице2, чтобы стать стандартными шаблонами регулярных выражений, но это должно быть легко. См. Https://dev.mysql.com/doc/refman/8.0/en/regexp.html.

0

Это должно сработать для вас:

select a.* from table1 a join table2 b on a.field like '%'+replace(b.field,'*','')+'%'
  • 0
    Но это не работает для Sceanrio 3
  • 0
    Работал для меня по всем трем сценариям

Ещё вопросы

Сообщество Overcoder
Наверх
Меню