문자열을 분할하고 마지막 요소를 가져옵니다.
다음과 같은 값을 가진 표가 있습니다.
Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx
OurStory/MeettheFoodieandtheMD.aspx
TheFood/OurMenu.aspx
이거 사갈래요.
Diet.aspx
MeettheFoodieandtheMD.aspx
OurMenu.aspx
이거 어떻게 해요?
SQL에서 수행하는 방법:
SELECT SUBSTRING( string , LEN(string) - CHARINDEX('/',REVERSE(string)) + 2 , LEN(string) ) FROM SAMPLE;
JSFiddle 여기 http://sqlfiddle.com/ #!3/41ead/11
SELECT REVERSE(LEFT(REVERSE(columnName), CHARINDEX('/', REVERSE(columnName)) - 1))
FROM tableName
ORHER 소스
시도해 보시기 바랍니다.
select url,(CASE WHEN CHARINDEX('/', url, 1)=0 THEN url ELSE RIGHT(url, CHARINDEX('/', REVERSE(url)) - 1) END)
from(
select 'Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx' as url union
select 'OurStory/MeettheFoodieandtheMD.aspx' as url union
select 'MeettheFoodieandtheMD.aspx' as url
)xx
이거 먹어봐요.그게 더 쉬워요.
SELECT RIGHT(string, CHARINDEX('/', REVERSE(string)) -1) FROM TableName
SELECT REVERSE ((
SELECT TOP 1 value FROM STRING_SPLIT(REVERSE('Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx'), '/')
)) AS fName
Result: Diet.aspx
표준.STRING_SPLIT
마지막 값을 사용할 수 없습니다.
트릭은 문자열을 반전시키는 것입니다 (REVERSE
)와 갈라지기 전에STRING_SPLIT
, 끝에서 첫 번째 값을 얻습니다(TOP 1 value
) 그리고 다시 결과를 뒤집어야 합니다 (REVERSE
원래 문자 시퀀스를 복원합니다.
SQL 테이블로 작업할 때 일반적인 접근 방식은 다음과 같습니다.
SELECT REVERSE ((
SELECT TOP 1 VALUE FROM STRING_SPLIT(REVERSE(mySearchString), '/')
)) AS myLastValue
FROM myTable
이를 수행하는 조금 더 간결한 방법은 (ktaria의 답변과 비슷하지만 SQL Server에서)입니다.
SELECT TOP 1 REVERSE(value) FROM STRING_SPLIT(REVERSE(fullPath), '/') AS fileName
Postgre와 동치SQL:
SELECT reverse(split_part(reverse(column_name), '/', 1));
아래 코드를 사용해 보십시오.
SELECT SUBSTRING( attachment, LEN(attachment)
- CHARINDEX('/', REVERSE(attachment)) + 2, LEN(attachment) ) AS filename
FROM filestable;
보다 심플하고 우아한:
select reverse(SPLIT_PART(reverse('Articles/Search/ArtMID/2681/ArticleID/2218/Diet.aspx'), '/',1))
이것도 시도해 볼 수 있습니다.
( SELECT TOP(1) value
FROM STRING_SPLIT(#string, '/')
ORDER BY CHARINDEX('/' + value + '/', '/' + #string+ '-') DESC)
jazzytomato의 솔루션을 단일 문자 토큰으로 수정했습니다 (D
) 및 단일 토큰의 경우(Diet.aspx
)
SELECT SUBSTRING( string , LEN(string) - CHARINDEX('/','/'+REVERSE(string)) + 2 , LEN(string) ) FROM SAMPLE;
MySQL에서 가장 쉬운 방법:
SELECT SUBSTRING_INDEX(string, '/', -1) FROM SAMPLE;
더 간단한 해결책이 있습니다.
SELECT SUBSTRING_INDEX(string, 'SUBSTRING_INDEX(string, '/', -1)', 1) FROM SAMPLE;
reverse(SUBSTRING(reverse(yourString),0,CHARINDEX('/',reverse(yourString)))) as stringLastPart
Create Table #temp
(
ID int identity(1,1) not null,
value varchar(100) not null
)
DECLARE @fileName VARCHAR(100);
INSERT INTO #temp(value) SELECT value from STRING_SPLIT('C:\Users\Documents\Datavalidation\Input.csv','\')
SET @fileName=(SELECT TOP 1 value from #temp ORDER BY ID DESC);
SELECT @fileName AS File_Name;
DROP TABLE #temp
언급URL : https://stackoverflow.com/questions/14412898/split-string-and-take-last-element
'programing' 카테고리의 다른 글
큰 글씨체가 멋진 아이콘으로 텍스트를 세로로 가운데 맞추는 방법은 무엇입니까? (0) | 2023.09.07 |
---|---|
INT 열에 NULL 값 삽입 (0) | 2023.09.07 |
서버에서 편집 가능한 데이터로 열을 가져오는 방법이 있습니까? (0) | 2023.09.07 |
공극 포인터 역참조 (0) | 2023.09.07 |
VBA의 명명된 범위에서 값 가져오기 (0) | 2023.09.07 |