SQL कैसे पर कब्जा करने के लिए/की जाँच करें एक विशेष रूप से पाठ मानक स्तंभ पॉप्युलेट करने के लिए के लिए मूल्य परिकलित स्तंभ

0

सवाल

में SQL सर्वर 2016 के लिए, मैं एक टेबल के साथ एक varchar स्तंभ (शीर्षक) है कि कुछ मूल्यों के नीचे के रूप में

title
ProALPHA - S - HTML Custom Table implementation (E001445)
IKA CP Implementation (Aus) (E001534-0001)
Test Engagment Integration: (E001637-0003) Non-billable
Customer requests customization for Analytics and Java Migration - E000797
Create list with customers renewing in H2 2020

मैं आबाद करना चाहते हैं के लिए मूल्य की गणना (व्युत्पन्न) स्तंभ पर आधारित है ऊपर शीर्षक के स्तंभ में इस तरह के एक तरीका है कि,

अगर शीर्षक स्तंभ पाठ E00 तो केवल व्युत्पन्न स्तंभ होगा E00 मूल्य और अशक्त

उदाहरण के लिए,

Expected Output

धन्यवाद

2

सबसे अच्छा जवाब

2

यह सोचते हैं मेरे बारे में सवाल है कि मूल्य हमेशा प्रत्यय स्ट्रिंग, या मूल्य आप चाहते हैं हमेशा से रहा है द्वारा suffixed एक सही कोष्ठक, तो आप निम्न कर सकते हैं के साथ कुछ CHARINDEXएस और SUBSTRING:

USE Sandbox;
GO

SELECT V.Title,
       SUBSTRING(V.Title,E.CI,RP.CI - E.CI) AS YourColumn
FROM (VALUES('ProALPHA - S - HTML Custom Table implementation (E001445)'),
            ('IKA CP Implementation (Aus) (E001534-0001)'),
            ('Test Engagment Integration: (E001637-0003) Non-billable'),
            ('Customer requests customization for Analytics and Java Migration - E000797'),
            ('Create list with customers renewing in H2 2020'))V(Title)
      CROSS APPLY (VALUES(NULLIF(CHARINDEX('E00',V.Title),0)))E(CI)
      CROSS APPLY (VALUES(ISNULL(NULLIF(CHARINDEX(')',V.Title,E.CI),0),LEN(V.Title)+1)))RP(CI);

db<>बेला

2021-11-23 23:39:56

धन्यवाद, @Larnu लेकिन कर सकते हैं मैं आबाद के मूल्य व्युत्पन्न स्तंभ क्रम में. मूल रूप से बनाने के दौरान तालिका सिंटैक्स. एक बार मानक स्तंभ शीर्षक हो जाता है, अपने मूल्य उस आधार पर व्युत्पन्न स्तंभ हो जाना चाहिए के रूप में मान E00.. या अशक्त.
Vikas J

तुम क्या मतलब है "चलाने के समय में" @VikasJ ? मान स्तंभ के, YourColumn, है गणना चलाने के लिए समय है; समय आप चलाने के लिए SELECT.
Larnu

मेरा मतलब है मैं करना चाहते हैं निर्दिष्ट करने के लिए एक परिकलित स्तंभ बनाने के दौरान एक टेबल मिल जाएगा कि एक मूल्य के E00 या अशक्त मूल्य के आधार पर मानक के शीर्षक स्तंभ ।
Vikas J

आप की आवश्यकता होगी करने के लिए ले भाव में ऊपर और घोंसला है, तो उन्हें @VikasJ .
Larnu
1

के लिए एक विकल्प होगा का एक संयोजन का उपयोग Charindex और Substring. नोट: निम्न 100 अभी होना चाहिए की घोषणा की लंबाई के स्तंभ - charindex हमेशा पर रोक स्ट्रिंग के अंत.

इस की आवश्यकता नहीं है समाप्त कोष्ठक में, यह लग रहा है के लिए पिछले अंक.

with t as (
    select * from (values 
        ('ProALPHA - S - HTML Custom Table implementation (E001445)'                                    ),
        ('IKA CP Implementation (Aus) (E001534-0001)'                                                                   ),
        ('Test Engagment Integration: (E001637-0003) Non-billable'                                      ),
        ('Customer requests customization for Analytics and Java Migration - E000797'   ),
        ('Create list with customers renewing in H2 2020'                                                           )
    )t(title)
)
select title, 
   Iif(title like '%E00%',Reverse(Substring(part,patindex('%[0-9]%',part),100)),null)
from t
cross apply (values( Reverse(Substring(t.title, CharIndex('E00',t.title), 100 )) ))x(part)

उदाहरण बेला

अद्यतन

तुम सकता है लागू ऊपर के रूप में एक परिकलित स्तंभ की मदद के साथ एक समारोह के लिए उपयोग को बदलने के लागू होते हैं.

यह ठीक हो सकता है अपने उपयोग के लिए मामला है, हालांकि मैं सुझा का उपयोग करके देखें यदि सभी संभव नहीं.

create function dbo.E00_Part(@title varchar(100))
returns varchar(100)
as
begin
    return (select Reverse(Substring(@title, CharIndex('E00',@title), 100 )))
end

create table T (title varchar(100), 
  Computed as Iif(title like '%E00%',
    Reverse(Substring(dbo.E00_Part(title),patindex('%[0-9]%',dbo.E00_Part(title)),100)),null))

देखें डेमो बेला 2

2021-11-23 10:22:48

धन्यवाद, @स्टू कर सकते हैं लेकिन मैं आबाद के मूल्य व्युत्पन्न स्तंभ क्रम में. मूल रूप से बनाने के दौरान तालिका सिंटैक्स. एक बार मानक स्तंभ शीर्षक हो जाता है, अपने मूल्य उस आधार पर व्युत्पन्न स्तंभ हो जाना चाहिए के रूप में मान E00.. या अशक्त.
Vikas J

@VikasJ अब आप कर रहे हैं एक अलग सवाल पूछ के बारे में एक परिकलित स्तंभ - कम से कम यह नहीं था स्पष्ट रूप से अपने सवाल है, एक व्युत्पन्न स्तंभ के लिए लागू होता है किसी भी मूल्य से गणना एक मौजूदा स्तंभ ।
Stu

क्षमा याचना, अगर मेरा सवाल स्पष्ट नहीं था. लेकिन हाँ, मैं करना चाहते हैं निर्दिष्ट करने के लिए एक परिकलित स्तंभ बनाने के दौरान एक टेबल मिल जाएगा कि एक मूल्य के E00 या अशक्त मूल्य के आधार पर मानक के शीर्षक स्तंभ ।
Vikas J

@VikasJ मैं सुझाव दिया है एक अद्यतन के ऊपर
Stu

बहुत बहुत धन्यवाद @स्टू, लेकिन मैं जब जोड़ा गया 2 से अधिक प्रकार के शीर्षक मैं नहीं मिल सकता है की उम्मीद है और उत्पादन में परिकलित स्तंभ । कृपया जांच पिछले 2 पंक्तियों का परिणाम है । dbfiddle.ब्रिटेन/...
Vikas J

@VikasJ जबकि मैं संशोधन कर सकते हैं यह करने के लिए के साथ सामना पहली बार नई पंक्ति, अपने नए दूसरी पंक्ति नियमों को तोड़ता है, आप पहले से ही स्थापित है, यानी, अंतिम पंक्ति अब कोई बंद गले और संख्या नहीं है, के अंत में स्ट्रिंग है, तो है न "के दो पैटर्न" आप दस्तावेज है.
Stu

सहमत यह सिर्फ है कि मैं इस नए परिदृश्य की अंतिम पंक्ति एक कुछ मिनट से वापस ग्राहक के लिए है, जिसमें संख्या में हो सकता है शुरुआत या अंत के साथ या ब्रेसिज़ के बिना. और क्या परिवर्तन बनाने के लिए बनाने के लिए पहली नई पंक्ति देने के लिए उम्मीद परिणाम? क्योंकि मैं बनाने की कोशिश में परिवर्तन Reg अभिव्यक्ति के patindex %[0-9]%, लेकिन नहीं था कि अच्छी तरह से काम किया.
Vikas J

तो अगर आप अब की जगह [0-9] के साथ एक बंद गले लगा यह काम करेगा के लिए अपनी पहली नई पंक्ति, हालांकि दृष्टिकोण की जरूरत है अलग होने के लिए दिए गए अपने नए मापदंड. दुर्भाग्य से यह एक में ले जाया गया goalpost.
Stu

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में