सभी,

मैं एक लंबी स्ट्रिंग के भीतर एक वाक्यांश ("अवलोकित TRD3 Ufls" खोजने की कोशिश कर रहा हूं, और मुझे परेशानी हो रही है। कभी-कभी उप स्ट्रिंग शुरुआत में, कभी बीच में और कभी-कभी अंत में हो सकती है। मैं कोशिश कर रहा हूं कुछ इस तरह

    MAX(CASE WHEN REGEXP_LIKE(B.shipment,'Observed TRD3 Ufls','i') THEN 1 ELSE 0 END) OVER (PARTITION BY d.Status) AS Tag

कभी-कभी देखा जा सकता है, इसलिए मुझे दोनों को प्राप्त करने में सक्षम होने की आवश्यकता है, और अंत में इसे असंवेदनशील होने की आवश्यकता है।

मेरे द्वारा समीक्षा किया गया प्रत्येक परिणाम हमेशा 1 के बजाय 0 होता है। किसी भी मदद की सराहना की जाएगी!

0
user13576801 15 पद 2020, 08:58

2 जवाब

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

REGEXP के बजाय, आप बस इस प्रकार का उपयोग कर सकते हैं:

upper(B.shipment) LIKE '%OBSERVED TRD3 UFLS%'

कृपया ध्यान दें कि यह मेरे लिए ठीक काम कर रहा है, भले ही मिलान स्ट्रिंग कॉलम के प्रारंभ, मध्य या अंत में हो

1
Popeye 15 पद 2020, 09:01

मुझे ऐसा लगता है कि आपका वर्तमान रेगेक्स तर्क where खंड में प्रकट होना चाहिए:

SELECT *
FROM yourTable
WHERE REGEXP_LIKE(shipment, 'Observed TRD3 Ufls', 'i');

REGEXP_LIKE को आपका वर्तमान कॉल पहले से ही टेक्स्ट के लिए केस असंवेदनशील खोज कर रहा होगा। ध्यान दें कि यदि आप टेक्स्ट के अंदर सटीक टेक्स्ट Observed TRD3 Ufls खोजना चाहते हैं, तो आपको शब्द सीमाओं का उपयोग करना चाहिए:

SELECT *
FROM yourTable
WHERE REGEXP_LIKE(shipment, '(^|\s)Observed TRD3 Ufls(\s|$)', 'i');

यह प्रारंभ, मध्य या अंत में पाठ से मेल खाएगा।

0
Tim Biegeleisen 15 पद 2020, 09:02