PostgreSQL क्वेरी के हिस्से के रूप में मैं एक पूर्णांक को स्ट्रिंग में कैसे बदलूं?


118

PostgreSQL क्वेरी के हिस्से के रूप में मैं एक पूर्णांक को स्ट्रिंग में कैसे बदलूं?

इसलिए, उदाहरण के लिए, मुझे चाहिए:

SELECT * FROM table WHERE <some integer> = 'string of numbers'

जहां <some integer>1 से 15 अंक लंबा से कहीं भी हो सकता है।


यदि आपके तार में अग्रणी शून्य है तो आप क्या करेंगे?
दिसफेलर

जवाबों:


123

क्योंकि संख्या 15 अंकों तक हो सकती है, आप 64 बिट (8-बाइट) पूर्णांक तक डालने के लिए तैयार होंगे। इसे इस्तेमाल करे:

SELECT * FROM table
WHERE myint = mytext::int8

::डाली ऑपरेटर ऐतिहासिक लेकिन सुविधाजनक है। Postgres भी SQL मानक वाक्यविन्यास के अनुरूप है

myint = cast ( mytext as int8)

क्या आप एक साथ की तुलना करना चाहते शाब्दिक पाठ है, तो int, कच्चा intपाठ करने के लिए:

SELECT * FROM table
WHERE myint::varchar(255) = mytext

43
आह। मुझे वास्तव में इसके दूसरे तरीके की आवश्यकता थी (myint ने varchar में बदल दिया) लेकिन आपका उत्तर मुझे सही जगह पर निर्देशित करने के लिए पर्याप्त था। मैंने अभी किया myint::varchar(255) = mytextऔर यह काम करता है। धन्यवाद!
spyd3rr

3
कड़ाई से, यह सवाल का जवाब नहीं देता है। उदाहरण समस्या नहीं थी - पूर्णांक को चार / स्ट्रिंग में परिवर्तित करना था। लेकिन धन्यवाद, @ spyd3rr
फ्रेडरिक स्ट्रक-शोइंग

@ यदि ऐसा नहीं है: ओपी की वास्तविक समस्या संख्यात्मक और पाठ मूल्यों की तुलना करने में असफल रही। यह उत्तर दिखाता है कि पाठ को एक नंबर पर कैसे ठीक किया जाए (भले ही ओपी ने एक संख्या को पाठ में डालने की कोशिश की हो)।
बोहेमियन

7
@Bohemian प्रश्न शीर्षक और पाठ कहता है: "मैं एक पूर्णांक क्वेरी के हिस्से के रूप में एक पूर्णांक को स्ट्रिंग में कैसे बदलूं?"। तब का एक उदाहरण जब यह प्रासंगिक हो सकता है। मेरे मामले में, मुझे यह धागा मिला क्योंकि मुझे वास्तव में एक पूर्णांक को एक स्ट्रिंग में बदलना था - तुलना के लिए नहीं बल्कि एक समग्र फ़ंक्शन के अंदर उपयोग करने के लिए जो विफल होगा, यदि तर्क एक स्ट्रिंग नहीं था। किस मामले में, यह सवाल का जवाब नहीं था, क्योंकि यह शब्दशः पढ़ता है।
फ्रेडरिक स्ट्रक-शोइंग

126

आप इस तरह एक पूर्णांक को एक स्ट्रिंग में डाल सकते हैं

intval::text

और इसलिए आपके मामले में

SELECT * FROM table WHERE <some integer>::text = 'string of numbers'

1
अगर आप jpa देशी प्रश्नों में SpEL के साथ काम कर रहे हैं तो यह काम नहीं करेगा। आपको उस स्थिति में कास्ट का उपयोग करना होगा।
राज शाह

12

आप ऐसा कर सकते हैं:

SELECT * FROM table WHERE cast(YOUR_INTEGER_VALUE as varchar) = 'string of numbers'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.