SQL में स्ट्रिंग का पहला वर्ण कैसे प्राप्त करें?


262

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

जवाबों:


436

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

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


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

19
@thomasrutter, निष्पादन योजना को देखते हुए, SQL सर्वर (कम से कम 2008R2) आंतरिक रूप से अनुवाद LEFT(colName, length)करता है SUBSTRING(colName, 1, length)। इसलिए यहां कोई अनुकूलन नहीं है, यह सिर्फ एक प्राथमिकता है।
अलेक्जेंडर अबाकुमोव

44

मैं पसंद करता हूं:

SUBSTRING (my_column, 1, 1)

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


कड़ाई से बोलते हुए, मानक संस्करण होगा

SUBSTRING (my_column FROM 1 FOR 1)

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

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


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

1
इंडेक्स 1 से क्यों शुरू होता है और 0 से नहीं? यह समान परिणाम देता है: SUBSTRING (my_column, 1, 1) = SUBSTRING (my_column, 0, 2)। यह स्थिति 0 में क्या है?
FrenkyB

19

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



13

यह निम्नलिखित द्वारा प्राप्त करना सरल है

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


3

इनपुट

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

2

यदि आप Sql string में string का पहला char सर्च करते है

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

=> return 4

2

चयनित फ़ील्ड में पहले दो वर्ण का चयन करें Left(string,Number of Char in int)

SELECT LEFT(FName, 2) AS FirstName FROM dbo.NameMaster
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.