2012-12-18 20 views
6

से दूसरे स्तंभ से एक मूल्य के साथ हर पंक्ति मैं तालिका सामग्री के निम्नलिखित उदाहरण हैअद्यतन एक ही मेज

+ Column1 | Column2 | Column3 + 
+---------|---------|---------+ 
+ 1  | val.txt |   + 
+ 2  | test.xls|   + 
+ 3  | abc.dwg |   + 
+ 4  | y.txt |   + 
+---------|---------|---------+ 

मैं Column2 से जानकारी के साथ Column3 अद्यतन करने के लिए, जिसका अर्थ है मैं चाहता हूँ (इस मामले में) चाहते हैं Column2 से एक्सटेंशन निकालें और इसे Column3 में डालें।

मैं परिणाम

+ Column1 | Column2 | Column3 + 
+---------|---------|---------+ 
+ 1  | val.txt | .txt + 
+ 2  | test.xls| .xls + 
+ 3  | abc.dwg | .dwg + 
+ 4  | y.txt | .txt + 
+---------|---------|---------+ 

की तरह लग रहे करना चाहते हैं कैसे करने के लिए एक UPDATE बयान के साथ?

मुझे पता है कि विस्तार को निकालने के लिए:

SUBSTRING(Column2, LEN(Column2)-3, LEN(Column2)) AS Extension 
+2

साइड टिप्पणी का उपयोग कर सकते हैं, लेकिन एक्सटेंशन निकालने के लिए आपकी अभिव्यक्ति विफल हो जाएगी निम्नलिखित सभी फ़ाइल नाम: "foo.xlsx", "bar.tar.gz", "baz"। मुझे यकीन नहीं है कि यह जानबूझकर है। –

+0

मेरी ओर से, इन एक्सटेंशन (आपके द्वारा उल्लिखित) उपलब्ध नहीं होंगे ... –

उत्तर

15

कैसे इस बारे में:

UPDATE dbo.YourTable 
SET Column3 = SUBSTRING(Column2, LEN(Column2)-3, LEN(Column2)) 

आवश्यक होने पर आप भी पंक्तियों अपडेट किया जा रहा सीमित करने के लिए एक WHERE खंड, जैसे शामिल हो सकते हैं:

UPDATE dbo.YourTable 
SET Column3 = SUBSTRING(Column2, LEN(Column2)-3, LEN(Column2)) 
WHERE Column3 IS NULL 

या ऐसा कुछ।

1

कोशिश इस

UPDATE dbo.YourTable 
    SET Column3 =SUBSTRING(Column2,CHARINDEX('.',Column2,0),(LEN(Column2)-CHARINDEX('.',Column2,0)+1)) 
0

पिछले 4 अक्षर का सबसे सरल तरीका निकालने के लिए है

UPDATE dbo.YourTable 
SET Column3 = RIGHT(Column2,4); 

पिछले डॉट के अधिकार के लिए सब कुछ निकालने के लिए और इसलिए इस तरह Foo.designer.cs के रूप में फ़ाइल नाम के साथ सही ढंग से काम आप

UPDATE dbo.YourTable 
SET Column3 = '.' + RIGHT(Column2, CHARINDEX('.', REVERSE('.' + Column2)) - 1) 
संबंधित मुद्दे