এসকিউএল-এ স্ট্রিংয়ের প্রথম অক্ষর কীভাবে পাবেন?


262

আমার 6 এর দৈর্ঘ্য সহ একটি এসকিউএল কলাম রয়েছে Now এখন সেই কলামটির কেবল প্রথম চর নিতে চাই। এটি করার জন্য কি এসকিউএলে কোনও স্ট্রিং ফাংশন রয়েছে?

উত্তর:


436

LEFT(colName, 1)এটিও করবে। এটা তোলে সমতুল্য SUBSTRING(colName, 1, 1)

আমি পছন্দ করি LEFT, যেহেতু আমি এটি কিছুটা পরিষ্কার পরিচ্ছন্ন দেখতে পেয়েছি তবে সত্যই, কোনও উপায়ই নেই।


2
আমি এসকিউএল সার্ভার সম্পর্কে জানি না, তবে যৌক্তিকভাবে কোনও ডাটাবেস সার্ভার সূচীকরণের চেয়ে বামদিকে আরও ভাল করতে সক্ষম হতে পারে যখন এটি কোনও সূচক ব্যবহার করছে।
থোমাসরুতার

19
@ থোমাস্রুটটার, একটি কার্যকরকরণ পরিকল্পনার দিকে তাকিয়ে এসকিউএল সার্ভার (কমপক্ষে ২০০৮ আর 2) অভ্যন্তরীণভাবে অনুবাদ LEFT(colName, length)করে SUBSTRING(colName, 1, length)। সুতরাং এখানে কোনও অপ্টিমাইজেশন নেই, এটি কেবল একটি পছন্দ।
আলেকজান্ডার আবাকুমভ

44

আমি পছন্দ করি:

SUBSTRING (my_column, 1, 1)

কারণ এটি স্ট্যান্ডার্ড এসকিউএল -২৯ সিনট্যাক্স এবং অতএব আরও বহনযোগ্য।


কঠোরভাবে বলতে গেলে, স্ট্যান্ডার্ড সংস্করণটি হবে

SUBSTRING (my_column FROM 1 FOR 1)

মুল বক্তব্যটি হ'ল এক থেকে অন্যটিতে রূপান্তর করা, অতএব যে কোনও অনুরূপ বিক্রেতার পরিবর্তনে তুচ্ছ।

পিএস এটি সম্প্রতি আমার দিকে ইঙ্গিত করা হয়েছিল যে স্ট্যান্ডার্ড এসকিউএল এর কার্যকারিতা ইচ্ছাকৃতভাবে বিপরীত, পরামিতিগুলির তালিকা রয়েছে যা প্রচলিত কমলবাদী নয়, যাতে এটি স্ট্যান্ডার্ড থেকে সহজেই সনাক্তযোগ্য হয়ে উঠতে পারে!


1
ধন্যবাদ, লেফট (স্ট্রিং, এন) অনেকগুলি ফর্ম্যাট দ্বারা সমর্থিত নয় (আমি যেটি ব্যবহার করছি তার সাথে)।
গ্রেজিট

1
কেন সূচক 1 দিয়ে শুরু হয় এবং 0 দিয়ে নয়? এটি একই ফলাফলটি ফেরত দেয়: জমা দিন (আমার_কলাম, 1, 1) = জমা দিন (আমার_কলাম, 0, 2)। এটি 0 পজিশনে কী আছে?
ফ্রেনকিবি

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

আপনি যদি সিকিএল স্ট্রিংয়ে স্ট্রিংয়ের প্রথম চরটি অনুসন্ধান করেন

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

=> return 4

2

এর সাথে নির্বাচিত ক্ষেত্রে প্রথম দুটি অক্ষর নির্বাচন করুন Left(string,Number of Char in int)

SELECT LEFT(FName, 2) AS FirstName FROM dbo.NameMaster
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.