SQL에서 문자열의 첫 문자를 얻는 방법은 무엇입니까?


262

길이가 6 인 SQL 열이 있습니다. 이제 해당 열의 첫 번째 문자 만 가져 오려고합니다. 이를 위해 SQL에 문자열 함수가 있습니까?

답변:


436

LEFT(colName, 1)또한 이것을 할 것입니다. 와 같습니다 SUBSTRING(colName, 1, 1).

나는 LEFT조금 더 깨끗하다는 것을 알기 때문에 좋아 하지만 실제로는 어느 쪽도 차이가 없습니다.


2
SQL 서버에 대해서는 잘 모르지만 논리적으로 데이터베이스 서버는 인덱스를 사용할 때 SUBSTRING보다 LEFT를 더 잘 최적화 할 수 있습니다.
thomasrutter

19
@thomasrutter, 실행 계획을 살펴보면 SQL Server (최소 2008R2)는 내부적으로로 변환 LEFT(colName, length)됩니다 SUBSTRING(colName, 1, length). 따라서 여기에는 최적화가 없으며 단지 환경 ​​설정입니다.
Alexander Abakumov

44

나는 선호한다:

SUBSTRING (my_column, 1, 1)

표준 SQL-92 구문이므로 더 이식성이 뛰어납니다.


엄밀히 말하면 표준 버전은

SUBSTRING (my_column FROM 1 FOR 1)

요점은, 하나에서 다른 것으로, 따라서 유사한 벤더 변형으로 변환하는 것은 사소한 것입니다.

ps 표준 SQL의 함수는 표준 commalists가 아닌 매개 변수 목록을 사용하여 표준에서 온 것으로 쉽게 식별 할 수 있도록 의도적으로 반대한다는 것이 최근에 지적되었습니다!


1
감사합니다. LEFT (str, n)는 많은 형식 (사용중인 형식 포함)에서 지원되지 않습니다.
GreySage

1
색인이 0이 아닌 1로 시작하는 이유는 무엇입니까? 동일한 결과를 반환합니다 : SUBSTRING (my_column, 1, 1) = SUBSTRING (my_column, 0, 2). 위치 0에 무엇입니까?
FrenkyB

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

SQL 문자열에서 문자열의 첫 번째 문자를 검색하면

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.