Ответы:
LEFT(colName, 1)
тоже сделаю это тоже. Это эквивалентно SUBSTRING(colName, 1, 1)
.
Мне нравится LEFT
, так как я нахожу это немного чище, но на самом деле, нет никакой разницы в любом случае.
LEFT(colName, length)
в SUBSTRING(colName, 1, length)
. Так что здесь нет никаких оптимизаций , это просто предпочтение.
Я предпочитаю:
SUBSTRING (my_column, 1, 1)
потому что это стандартный синтаксис SQL-92 и, следовательно, более переносимый.
Строго говоря, стандартная версия будет
SUBSTRING (my_column FROM 1 FOR 1)
Дело в том, что переход от одного к другому, следовательно, к любому подобному варианту вендора, тривиален.
PS Только недавно мне было указано, что функции в стандартном SQL намеренно противоречат, имея списки параметров, которые не являются обычными коммалистами, для того, чтобы их было легко идентифицировать как стандартное!
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student
Это легко достичь с помощью следующего
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
ВХОД
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