2009-04-27 17 views
144

मेरे पास 6 की लंबाई वाला एक SQL स्तंभ है। अब केवल उस कॉलम का पहला char लेना चाहते हैं। ऐसा करने के लिए एसक्यूएल में कोई स्ट्रिंग फ़ंक्शन है?एसक्यूएल में स्ट्रिंग के पहले अक्षर को कैसे प्राप्त करें?

उत्तर

280

LEFT(colName, 1) यह भी करेगा। यह SUBSTRING(colName, 1, 1) के बराबर है।

मुझे LEFT पसंद है, क्योंकि मुझे यह थोड़ा क्लीनर लगता है, लेकिन वास्तव में, कोई अंतर नहीं है। पहले 12 के लिए

+0

मैं एसक्यूएल सर्वर के बारे में पता नहीं है, लेकिन तार्किक एक डाटाबेस सर्वर अनुकूलन करने के लिए सक्षम हो सकता है इंडेक्स का उपयोग करते समय सब्सट्रिंग से बेहतर बाएं। – thomasrutter

+7

@ थॉमसट्रटर, निष्पादन योजना को देखते हुए, SQL सर्वर (कम से कम 2008R2) आंतरिक रूप से 'एसईएफटी (कॉलनाम, लंबाई)' में 'सब्सट्रेशन, कॉलनाम, 1, लंबाई)' का अनुवाद करता है। तो ** यहां कोई अनुकूलन नहीं है ** यह सिर्फ एक वरीयता है। –

11

SUBSTRING (MyColumn, 1 , 1) और पहले दो के लिए SUBSTRING (MyColumn, 1 , 2)

28

मैं पसंद करते हैं:

SUBSTRING (my_column, 1, 1) 

क्योंकि यह मानक SQL-92 वाक्य रचना है और इसलिए अधिक पोर्टेबल है।


सच पूछिये तो, मानक संस्करण होगा

SUBSTRING (my_column FROM 1 FOR 1) 

बिंदु है, अन्य एक से बदलने इसलिए किसी भी इसी तरह विक्रेता बदलाव के लिए, तुच्छ है।

पेज। हाल ही में मुझे यह बताया गया था कि मानक एसक्यूएल में कार्य जानबूझकर विपरीत हैं, पैरामीटर सूचियां जो परंपरागत कम्युनिस्ट नहीं हैं, ताकि उन्हें मानक से आसानी से पहचाना जा सके!

+0

धन्यवाद, LEFT (str, n) कई प्रारूपों द्वारा समर्थित नहीं है (जिसमें मैं उपयोग कर रहा हूं)। – GreySage

0

आप Sql स्ट्रिंग में श्रृंखला का पहला वर्ण खोज करते हैं

SELECT CHARINDEX('char', 'my char') 

=> return 4 
1

इनपुट

STRMIDDLENAME 
-------------- 
Aravind Chaterjee 
Shivakumar 
Robin Van Parsee 

SELECT STRMIDDLENAME, 
CASE WHEN INSTR(STRMIDDLENAME,' ',1,2) != 0 THEN SUBSTR(STRMIDDLENAME,1,1) || SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,1)+1,1)|| 
SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,2)+1,1) 
WHEN INSTR(STRMIDDLENAME,' ',1,1) != 0 THEN SUBSTR(STRMIDDLENAME,1,1) || SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,1)+1,1) 
ELSE SUBSTR(STRMIDDLENAME,1,1) 
END AS FIRSTLETTERS 
FROM Dual; 

OUTPUT 
STRMIDDLENAME     FIRSTLETTERS 
---------      ----------------- 
Aravind Chaterjee    AC   
Shivakumar      S 
Robin Van Parsee     RVP 
4
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student 
5

यह पालन करते हुए इस लक्ष्य को हासिल करने के लिए सरल है:

DECLARE @SomeString NVARCHAR(20) = 'This is some string' 
DECLARE @Result NVARCHAR(20) 

और या तो

SET @Result = SUBSTRING(@SomeString, 2, 3) 
SELECT @Result 

@Result: his

-या-

SET @Result = LEFT(@SomeString, 6) 
SELECT @Result 

@Result: This i

संबंधित मुद्दे