ज्यामितीय प्रकार कई तरीकों से इनपुट किया जा सकता है।
-
पहले फॉर्म में, आपका
?
पैरामीटर को मानों से प्रतिस्थापित नहीं किया जाता है क्योंकि वे एक स्ट्रिंग के शाब्दिक भाग होते हैं। तो 0 पैरामीटर अपेक्षित हैं ... -
सिंगल कोट्स के बिना दूसरे फॉर्म में, आपका
?
पैरामीटर बदल दिए गए हैं, लेकिन((18.9750,72.8258), 5)
एक पंक्ति प्रकार के रूप में व्याख्या की जाती है, जोcircle()
. के साथ काम नहीं करता है ।
आप ज्यामितीय फ़ंक्शन को लागू करने का प्रयास कर रहे हैं circle()
जो एक point
takes लेता है और एक double precision
("केंद्र और त्रिज्या से वृत्त")। ये मान्य सिंटैक्स वेरिएंट हैं:
SELECT circle '((18.9750,72.8258), 5)' AS cast_literal
' <(18.9750,72.82580),5>'::circle AS cast_literal2
, circle(point '(18.9750,72.8258)', '5') AS literal_point_n_radius
, circle(point(18.9750,72.8258), '5') AS point_n_literal_radius
, circle(point(18.9750,72.8258), 5) AS point_n_radius
SQL fiddle.
::text
में कास्ट करें सिर्फ SQL फिडेल में विक्षिप्त प्रदर्शन को साफ करने के लिए है
आपके मामले में, संख्यात्मक मान provide प्रदान करने के लिए (एक स्ट्रिंग अक्षर नहीं), अंतिम रूप का उपयोग करें और इसे काम करना चाहिए:
SELECT addressid, geocode
FROM maddress
WHERE geocode::point <@ circle(point(?,?), ?);
यदि wso2dss (जिसका मुझे कोई अनुभव नहीं है) कार्यों को स्वीकार नहीं करता है, तो आपको पहले दो रूपों में से एक का उपयोग करना होगा और एक एकल प्रदान करना होगा। स्ट्रिंग शाब्दिक के रूप में पैरामीटर:
SELECT addressid, geocode
FROM maddress
WHERE geocode::point <@ circle ?;
... जहां पैरामीटर ऊपर प्रदर्शित के रूप में संक्षिप्त शाब्दिक है।
आप कर सकते थे पोस्टग्रेज़ को संयोजन करने दें और फिर भी तीन संख्यात्मक मान पास करें:
SELECT addressid, geocode
FROM maddress
WHERE geocode::point <@ ('(('::text || ? || ',' || ? || '),' || ? || ')')::circle;