पहले मैं यह बता दूं कि मेरा प्रश्न इस प्रश्न के बहुत करीब होने वाला है: मैप-कॉलम-डेटा-टू-ए-वैल्यू-ऑरैकल

कृपया इसे पहले जल्दी से पढ़ें।

अब मेरे मामले में मुझे ठीक वही चीज़ चाहिए, लेकिन प्राथमिक क्वेरी के रूप में नहीं। इसके बजाय मुझे अपनी क्वेरी के एक भाग के रूप में जानकारी चाहिए।

मेरे पास यह तालिका है:

someId | someValue | dataType
   1   |    500    | 1
   2   | someValue | 2

और मुझे पता है कि डेटा टाइप "1" का अर्थ है "पूर्णांक"। मैं डेटा टाइप कॉलम में अन्य मानों का अर्थ भी जानता हूं।

इसलिए मैं तालिका में सभी प्रविष्टियों का चयन करना चाहता हूं, लेकिन उनके डेटा प्रकार उनके नंबरों के बजाय उनके मानव पठनीय मूल्यों के रूप में हैं:

परिणाम:

1, 500, Integer
2, someString, String

मेरे द्वारा लिंक किए गए प्रश्न के समाधान को लागू करने का प्रयास करते हुए, मैंने एक उपश्रेणी बनाई जैसे

SELECT
someId,
someValue,
(
  SELECT CASE
  WHEN dataType = 1 THEN 'INTEGER'
  WHEN dataType = 2 THEN 'FLOAT'
  WHEN dataType = 3 THEN 'TEXT'
  ELSE 'DATE'
END
  myTable
) as myDataType

मुझे एक सबक्वायरी मिलेगी जो 1 से अधिक परिणाम लौटाएगी और ओरेकल शिकायत करेगा।

चूंकि मैं सीधे एसक्यूएल के माध्यम से डीबी तक पहुंचता हूं, मुझे "शुद्ध एसक्यूएल" समाधान की आवश्यकता होती है। अन्यथा मैं PHP में, मैपिंग के माध्यम से मूल्य को पार्स कर सकता हूं। लेकिन यहां ऐसा संभव नहीं है। मैं डेटा और संरचना के बारे में जानकारी इकट्ठा करने और इकट्ठा करने के लिए डीबी में कुछ प्रश्नों की शूटिंग कर रहा हूं, जिनके बारे में हम नहीं जानते हैं। तो केवल एसक्यूएल उपलब्ध है।

3
Worp 13 मार्च 2017, 18:47

1 उत्तर

सबसे बढ़िया उत्तर

सबक्वेरी से छुटकारा पाएं:

SELECT someId,
       someValue,
       CASE
          WHEN dataType = 1 THEN 'INTEGER'
          WHEN dataType = 2 THEN 'FLOAT'
          WHEN dataType = 3 THEN 'TEXT'
          ELSE 'DATE'
       END as Datatype
from  myTable
7
JohnHC 13 मार्च 2017, 18:51
Logout dan login kembali dalam mode grafis dengan menekan CTRL+ALT+F7.
 – 
Worp
14 मार्च 2017, 09:41