मारियाडीबी में दो समान कार्य हैं FIELD()
और FIND_IN_SET()
. पहली नज़र में, ये वही काम करते प्रतीत होते हैं, लेकिन एक अंतर है।
यह लेख इन दो कार्यों के बीच अंतर को देखता है।
वाक्यविन्यास और परिभाषाएं
सबसे पहले, आइए प्रत्येक फ़ंक्शन के सिंटैक्स और परिभाषा को देखें:
कार्य | <थ>वाक्यविन्यास <थ>परिभाषा||
---|---|---|
FIELD() | FIELD(pattern, str1[,str2,...]) | दिए गए पैटर्न से मेल खाने वाली स्ट्रिंग या संख्या की अनुक्रमणिका स्थिति देता है। |
FIND_IN_SET() | FIND_IN_SET(pattern, strlist) | सूचकांक स्थिति लौटाता है जहां एक स्ट्रिंग सूची में दिया गया पैटर्न होता है। |
दोनों फ़ंक्शन एक pattern
स्वीकार करते हैं उनके पहले तर्क के रूप में। हालाँकि, आगे जो आता है वह उनके मतभेदों को उजागर करता है:
FIELD()
अल्पविराम द्वारा अलग किए गए एक या अधिक तार स्वीकार करता है।FIND_IN_SET()
एकल स्ट्रिंग सूची को स्वीकार करता है।
उदाहरण
यहां एक उदाहरण दिया गया है जो इन दो कार्यों के बीच अंतर को प्रदर्शित करता है:
SELECT
FIELD('bat', 'cat','dog','bat') AS "FIELD()",
FIND_IN_SET('bat', 'cat,dog,bat') AS "FIND_IN_SET()";
परिणाम:
+---------+---------------+ | FIELD() | FIND_IN_SET() | +---------+---------------+ | 3 | 3 | +---------+---------------+
प्रत्येक फ़ंक्शन एक ही परिणाम देता है, लेकिन प्रत्येक फ़ंक्शन स्ट्रिंग को एक अलग प्रारूप में स्वीकार करता है।
FIELD()
. को दिए गए मान तीन अलग-अलग तर्कों के रूप में आए, जबकि FIND_IN_SET()
. को प्रदान किए गए मान एक स्ट्रिंग सूची के रूप में आया (जिसमें अलग-अलग मान थे)।