回答:
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)
重要なのは、1つの形式から別の形式への変換、したがって同様のベンダーのバリエーションへの変換は簡単なことです。
ps最近、標準SQLの関数が、標準からのものであることを簡単に識別できるようにするために、従来のコンマリストではないパラメーターリストを使用することにより、意図的に反対であることを指摘されました!
以下によって達成するのは簡単です
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