programing

문자열을 분할하고 마지막 요소를 가져옵니다.

css3 2023. 9. 7. 21:55

문자열을 분할하고 마지막 요소를 가져옵니다.

다음과 같은 값을 가진 표가 있습니다.

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