Odpowiedzi:
LEFT(colName, 1)
też to zrobi. Jest to równoważne z SUBSTRING(colName, 1, 1)
.
Lubię LEFT
, ponieważ uważam, że jest trochę czystszy, ale tak naprawdę nie ma żadnej różnicy.
LEFT(colName, length)
do SUBSTRING(colName, 1, length)
. Więc nie ma tu żadnych optymalizacji , to tylko preferencja.
Wolę:
SUBSTRING (my_column, 1, 1)
ponieważ jest to standardowa składnia SQL-92 i dlatego jest bardziej przenośna.
Ściśle mówiąc, byłaby to wersja standardowa
SUBSTRING (my_column FROM 1 FOR 1)
Chodzi o to, że przejście od jednego do drugiego, a więc do dowolnej podobnej odmiany dostawcy, jest banalne.
ps Niedawno wskazano mi, że funkcje w standardowym języku SQL są celowo przeciwne, ponieważ listy parametrów nie są konwencjonalnymi komalistami, aby ułatwić ich identyfikację ze standardu!
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student
Można to łatwo osiągnąć w następujący sposób
DECLARE @SomeString NVARCHAR(20) = 'This is some string'
DECLARE @Result NVARCHAR(20)
Zarówno
SET @Result = SUBSTRING(@SomeString, 2, 3)
SELECT @Result
@Result = his
lub
SET @Result = LEFT(@SomeString, 6)
SELECT @Result
@Result = This i
WEJŚCIE
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