Yanıtlar:
LEFT(colName, 1)
bunu da yapacak. Eşdeğerdir SUBSTRING(colName, 1, 1)
.
LEFT
Biraz daha temiz bulduğum için seviyorum , ama gerçekten, her iki şekilde de bir fark yok.
LEFT(colName, length)
içine SUBSTRING(colName, 1, length)
. Yani burada herhangi bir optimizasyon yok, bu sadece bir tercih.
Tercih ederim:
SUBSTRING (my_column, 1, 1)
çünkü Standart SQL-92 sözdizimi ve bu nedenle daha taşınabilir.
Kesinlikle konuşmak gerekirse, standart sürüm
SUBSTRING (my_column FROM 1 FOR 1)
Buradaki nokta, birinden diğerine, dolayısıyla herhangi bir benzer satıcı varyasyonuna dönüştürmenin önemsiz olmasıdır.
ps Son zamanlarda standart SQL'deki işlevlerin, standart komalistler olmayan parametre listelerine sahip olduklarından, standarttan kolayca ayırt edilebilmelerini sağlamak için kasıtlı olarak ters düştüğünü belirtmiştim!
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student
Aşağıdakilerle başarmak kolaydır
DECLARE @SomeString NVARCHAR(20) = 'This is some string'
DECLARE @Result NVARCHAR(20)
ya
SET @Result = SUBSTRING(@SomeString, 2, 3)
SELECT @Result
@Result = his
veya
SET @Result = LEFT(@SomeString, 6)
SELECT @Result
@Result = This i
GİRİŞ
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