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.