Как искать в SQL, если какая-либо строка символ строки содержится в другой строке? - PullRequest
0 голосов
/ 14 октября 2019

Я занимаюсь разработкой некоторых сложных запросов преобразования SQL, в которых мне нужно искать в столбце с объединенными символами (например, 'LKA') другую строку с объединенными символами в любом порядке (например, 'AL').

Iуже пытался использовать ключевое слово LIKE, например:

SELECT UMCOD FROM x WHERE UMCOD LIKE y Где UMCOD, например, LKA и y AL. Это явно не может работать, потому что я не использовал подстановочные знаки.

Например, у меня есть следующие таблицы sql:

CREATE TABLE `searchable_chars` ( `charstring` CHAR(9) NOT NULL );
CREATE TABLE `searchme` ( `tosearch` CHAR(9) NOT NULL );
INSERT INTO `searchable_chars` (`charstring`) VALUES ('LKA');
INSERT INTO `searchme` (`tosearch`) VALUES ('AL'), ('L'), ('U'), ('KU'), ('A');

Запрос (как и приведенный ниже, не работает):

SELECT x.charString, y.toSearch FROM `searchable_chars` AS x LEFT JOIN `searchme` AS y ON x.charstring LIKE y.toSearch

должен вернуть следующую таблицу

+------------+----------+
| charString | toSearch |
+------------+----------+
| LKA        | AL       |
| LKA        | L        |
| LKA        | KU       |
| LKA        | A        |
+------------+----------+

Надеюсь, вы понимаете, о чем я. Я знаю, как решить это, используя js или любой другой язык, но я хочу решить это, используя чистый SQL.

Ответы [ 2 ]

0 голосов
/ 14 октября 2019

Я не использовал DB2, но, согласно документации, существует предикат REGEXP_LIKE, который может быть использован для выполнения ваших задач:

SELECT x.charString, y.toSearch FROM `searchable_chars` AS x 
LEFT JOIN `searchme` AS y ON REGEXP_LIKE(x.charstring , '[' + y.toSearch + ']')

https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_73/db2/rbafzregexp_like.htm

КакУ меня нет экземпляра DB2, я не пробовал это ...

0 голосов
/ 14 октября 2019

попробуйте ниже запроса ..

SELECT x.charString, y.toSearch FROM `searchable_chars` AS x LEFT JOIN `searchme` AS y ON x.charstring LIKE '%'+ y.toSearch +'%'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...