मेरे पास 1000 मिलियन रिकॉर्ड के साथ एक विशाल तालिका है मैंसैकड़ों की संख्या के साथ छोटे टेबल से रिकॉर्ड का मिलान करना चाहते हैं विशाल तालिका में फुल_नाम (व्यक्ति का नाम, पहला नाम मिडिलनाम अंतिम नाम) दर्ज किया गया छोटी तालिका में 3 दर्ज किए गए हैं (TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART TINY_TABLE.NAME_PART) लेकिन firstname / middlename / lastname को small_table में मिलाया जाता है।
अब मैं आंतरिक रूप से दोनों तालिकाओं में शामिल होना चाहता हूं और फजी मिलान करना चाहता हूं। मैं फुलटेक्स्ट खोज का उपयोग नहीं कर रहा / रही हूं या इसमें कमांड शामिल है क्या हम इसका उपयोग ज्वाइन कर सकते हैं (जैसे कि oracle में instr fuction)
if (
TINY_TABLE.NAME_PART_1 exists in Huge_Table
and
TINY_TABLE.NAME_PART_2 exists in Huge_Table
and
TINY_TABLE.NAME_PART_3 exists in Huge_Table
)
then
Mark Matched
else
Mark UnMatched
उत्तर:
उत्तर № 1 के लिए 1कुछ इस तरह की कोशिश करो। लेकिन यह एक कुशल कोड नहीं है।
SELECT DISTINCT a.fullname,
"Matched" [status]
FROM (select distinct fullname from huge_table) a
JOIN tiny_table b
ON a.fullname LIKE "%" + namepart1 + "%"
AND a.fullname LIKE "%" + case when len(namepart2)=0 then " " else namepart2 end + "%"
AND a.fullname LIKE "%" + namepart3 + "%"
UNION
SELECT *,
"Not matched" [status]
FROM huge_table