Вы можете сделать что-то вроде
String str = "I am in the EU.";
Matcher matcher = Pattern.compile("\\bEU\\b").matcher(str);
if (matcher.find()) {
System.out.println("Found word EU");
}
Вы выполняете полное перекрестное объединение трех таблиц, поэтому для каждой комбинации строки tbMaster, строки tbCID и строки table3, где три не совпадают в трех столбцах, будет возвращена строка.
Если вы пытаетесь вернуть строку tbMaster, в которой CID, Amount и DatePaid не отображаются ни в tbSUID, ни в table3, вам нужно что-то похожее на ваш первый запрос:
SELECT tbMaster.EmployeeID, tbMaster.Amount, tbMaster.DatePaid, tbMaster.CID
FROM tbMaster
LEFT JOIN tbSUID ON (tbMaster.CID = tbSUID.CID) AND (tbMaster.Amount = tbSUID.Amount) AND (tbMaster.DatePaid = tbSUID.DatePaid)
LEFT JOIN table3 ON (tbMaster.CID = table3.CID) AND (tbMaster.Amount = table3.Amount) AND (tbMaster.DatePaid = table3.DatePaid)
WHERE ((tbMaster.[Advance/paid])="Paid Respondent")
AND ((tbCID.CID) Is Null) OR (table3.CID Is Null));
Если запись должен появиться только в одном из tbSUID и table3, заменить последнее «ИЛИ» на «И».
Рассмотрим подзапросы в пунктах NOT EXISTS
:
SELECT m.EmployeeID, m.Amount, m.DatePaid, m.[Advance/paid], m.CID
FROM tbMaster m
WHERE NOT EXISTS
(SELECT 1 FROM tbCID c
WHERE c.CID = m.CID OR c.AMOUNT = m.AMOUNT OR c.DATEPAID = m.DATEPAID)
OR NOT EXISTS
(SELECT 1 FROM table3 t
WHERE t.CID = m.CID OR t.AMOUNT = m.AMOUNT OR t.DATEPAID = m.DATEPAID)
Для обратных сравнений рассмотрите возможность добавления запросов объединения с индикатором source_table :
SELECT m.EmployeeID, m.Amount, m.DatePaid, m.[Advance/paid], m.CID,
'tbMaster' AS [source_table]
FROM tbMaster m
WHERE NOT EXISTS
(SELECT 1 FROM tbCID c
WHERE c.CID = m.CID OR c.AMOUNT = m.AMOUNT OR c.DATEPAID = m.DATEPAID)
OR NOT EXISTS
(SELECT 1 FROM table3 t
WHERE t.CID = m.CID OR t.AMOUNT = m.AMOUNT OR t.DATEPAID = m.DATEPAID)
UNION ALL
SELECT c.EmployeeID, c.Amount, c.DatePaid, c.[Advance/paid], c.CID,
'tbCID' AS [source_table]
FROM tbCID c
WHERE NOT EXISTS
(SELECT 1 FROM tbMaster m
WHERE m.CID = c.CID OR m.AMOUNT = c.AMOUNT OR m.DATEPAID = c.DATEPAID)
OR NOT EXISTS
(SELECT 1 FROM table3 t
WHERE t.CID = c.CID OR t.AMOUNT = c.AMOUNT OR t.DATEPAID = c.DATEPAID)
UNION ALL
SELECT t.EmployeeID, t.Amount, t.DatePaid, t.[Advance/paid], t.CID,
'table3' AS [source_table]
FROM table3 t
WHERE NOT EXISTS
(SELECT 1 FROM tbMaster m
WHERE m.CID = t.CID OR m.AMOUNT = t.AMOUNT OR m.DATEPAID = t.DATEPAID)
OR NOT EXISTS
(SELECT 1 FROM tbCID c
WHERE c.CID = t.CID OR c.AMOUNT = t.AMOUNT OR c.DATEPAID = t.DATEPAID)