PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL सरणियों में एक मान की स्थिति ढूँढना

दस्तावेज अनुशंसा करता है generate_subscripts . का उपयोग करके समारोह। नीचे दिए गए फ़ंक्शन के PHP के array_search . का अनुकरण करें :

CREATE FUNCTION array_search(needle ANYELEMENT, haystack ANYARRAY)
RETURNS INT AS $$
    SELECT i
      FROM generate_subscripts($2, 1) AS i
     WHERE $2[i] = $1
  ORDER BY i
$$ LANGUAGE sql STABLE;

यह पहले मैच की अनुक्रमणिका देता है, यदि मौजूद है। यदि आप सभी मैच चाहते हैं, तो बस RETURNS INT बदलें करने के लिए RETURNS SETOF INT . यह फ़ंक्शन, जैसा है, NULL लौटाता है अगर कोई मेल नहीं मिलता है।

यह फ़ंक्शन केवल एक-आयामी सरणियों के साथ काम करता है।

साथ ही, ध्यान रखें कि array_search(NULL, a) हमेशा NULL लौटाता है , भले ही सरणी में अशक्त तत्व हों:

> SELECT array_search(null, array[1, 2, null, 4]);
 array_search 
--------------

(1 row)

ऐसा इसलिए है क्योंकि SQL NULL = NULL को मानता है अज्ञात होना (यानी NULL ) देखें functions-comparison . अगर आप array_search चाहते हैं NULL find खोजने में सक्षम होने के लिए तत्व, परिवर्तन

     WHERE $2[i] = $1

करने के लिए

     WHERE $2[i] IS NOT DISTINCT FROM $1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL में केस असंवेदनशील संयोजन जोड़ें

  2. PostgreSQL कॉलम foo मौजूद नहीं है जहां foo मान है

  3. चेनलिंक नोड:मैं ओआरएम त्रुटियों को लॉक करने में असमर्थ फिक्सिंग से कैसे संपर्क कर सकता हूं?

  4. क्या PostgreSQL tf-idf का उपयोग करता है?

  5. मेरी क्वेरी में विभाजन और COUNT का परिणाम हमेशा 1 क्यों होता है?