[SQL] 후 SQL Server의 특정 문자 앞에 모든 것을 얻을
SQL후 SQL Server의 특정 문자 앞에 모든 것을 얻을
내 데이터베이스에서 다음 항목을 가지고 :
images/test.jpg
내가 얻을 수 있도록 항목을 다듬을 : 테스트를
그러니까 기본적으로, 나는 후 /과 전에 모든 것을 할 수 있습니다.
어떻게 그것을 해결할 수 있습니까?
해결법
-
==============================
1.SUBSTRING 및 CHARINDEX : 당신은 SQL을 사용하여 테이블의 출력을 얻고 싶은 경우에, 당신을 도울 것입니다 다음과 같은 기능을 살펴. 당신은 당신의 항목을 손질하는 사람들을 사용할 수 있습니다.
SUBSTRING 및 CHARINDEX : 당신은 SQL을 사용하여 테이블의 출력을 얻고 싶은 경우에, 당신을 도울 것입니다 다음과 같은 기능을 살펴. 당신은 당신의 항목을 손질하는 사람들을 사용할 수 있습니다.
COL은 이미지 디렉토리가 포함 된 열의 이름입니다 가능한 쿼리 (다음과 같이 표시됩니다
SELECT SUBSTRING(col, LEN(SUBSTRING(col, 0, LEN(col) - CHARINDEX ('/', col))) + 1, LEN(col) - LEN(SUBSTRING(col, 0, LEN(col) - CHARINDEX ('/', col))) - LEN(SUBSTRING( col, CHARINDEX ('.', col), LEN(col))));
못생긴 짐승의 비트. 또한 'DIR / 이름 .ext'의 표준 형식에 따라 달라집니다.
편집하다: (프라 빈에서 영감)이 사람은 다른 길이의 확장과 더 일반적인 및 거래입니다 :
SELECT SUBSTRING(col, LEN(LEFT(col, CHARINDEX ('/', col))) + 1, LEN(col) - LEN(LEFT(col, CHARINDEX ('/', col))) - LEN(RIGHT(col, LEN(col) - CHARINDEX ('.', col))) - 1);
-
==============================
2.다음 함수를 사용
다음 함수를 사용
left(@test, charindex('/', @test) - 1)
-
==============================
3.전에
전에
SELECT SUBSTRING(ParentBGBU,0,CHARINDEX('/',ParentBGBU,0)) FROM dbo.tblHCMMaster;
후
SELECT SUBSTRING(ParentBGBU,CHARINDEX('-',ParentBGBU)+1,LEN(ParentBGBU)) FROM dbo.tblHCMMaster
-
==============================
4.
declare @T table ( Col varchar(20) ) insert into @T Select 'images/test1.jpg' union all Select 'images/test2.png' union all Select 'images/test3.jpg' union all Select 'images/test4.jpeg' union all Select 'images/test5.jpeg' Select substring( LEFT(Col,charindex('.',Col)-1),charindex('/',Col)+1,len(LEFT(Col,charindex('.',Col)-1))-1 ) from @T
-
==============================
5.---- 문자를 선택하기 전에 / 포함 /
---- 문자를 선택하기 전에 / 포함 /
select SUBSTRING ('abcde/wxyz',0,CHARINDEX('/','abcde/wxyz')+1)
--select 문자 후 / 포함 /
select SUBSTRING('abcde/wxyz',CHARINDEX('/','abcde/wxyz'),LEN('abcde/wxyz'))
-
==============================
6.나는 훨씬 더 일반적이다 방법을 만들었습니다 :
나는 훨씬 더 일반적이다 방법을 만들었습니다 :
그래서 :
DECLARE @a NVARCHAR(MAX)='images/test.jpg'; --Touch here DECLARE @keysValueToSearch NVARCHAR(4000) = '/' DECLARE @untilThisCharAppears NVARCHAR(4000) = '.' DECLARE @keysValueToSearchPattern NVARCHAR(4000) = '%' + @keysValueToSearch + '%' --Nothing to touch here SELECT SUBSTRING( @a, PATINDEX(@keysValueToSearchPattern, @a) + LEN(@keysValueToSearch), CHARINDEX( @untilThisCharAppears, @a, PATINDEX(@keysValueToSearchPattern, @a) + LEN(@keysValueToSearch) ) -(PATINDEX(@keysValueToSearchPattern, @a) + LEN(@keysValueToSearch)) )
-
==============================
7.난 그냥 내 보고서 중 하나에서 이런 짓을 그리고 그것은 매우 간단했다.
난 그냥 내 보고서 중 하나에서 이런 짓을 그리고 그것은 매우 간단했다.
이 시도:
=MID(Fields!.Value,8,4)
참고 : 나는 잡으려고 값이 일정하지 있는지를 무엇을 얻으려고 노력하는 것은 일정한뿐만 아니라입니다 때문에이 나를 위해 일했다.
-
==============================
8.나는이 잠시왔다 알고 ..하지만 여기에 생각이다
나는이 잠시왔다 알고 ..하지만 여기에 생각이다
declare @test varchar(25) = 'images/test.jpg' select @test as column_name , parsename(replace(@test,'/','.'),1) as jpg ,parsename(replace(@test,'/','.'),2) as test ,parsename(replace(@test,'/','.'),3) as images
-
==============================
9.나는 Royi Namir의 답변이 유용하다고하지만 함수로 만드는 데에 확대했다. 나는 나에게 감각을 만들 었는지에 변수 이름을 변경하지만 원하는 경우 당신은 충분히 쉽게 다시 번역 할 수 있습니다.
나는 Royi Namir의 답변이 유용하다고하지만 함수로 만드는 데에 확대했다. 나는 나에게 감각을 만들 었는지에 변수 이름을 변경하지만 원하는 경우 당신은 충분히 쉽게 다시 번역 할 수 있습니다.
또한, Royi의 대답의 코드는 이미 문자의 존재가 (이 문자열의 처음부터 시작) 존재하지 않는에서 검색 한 사건을 처리하지만, 나는 또한에 검색되고있는 캐릭터가 존재하지 않는 경우를 처리하고 싶었다.
이 경우 그것은 문자에서 검색에서 시작하여 문자열의 끝에 문자의 나머지 부분을 반환하여 유사한 방식으로 작동합니다.
CREATE FUNCTION [dbo].[getValueBetweenTwoStrings](@inputString NVARCHAR(4000), @stringToSearchFrom NVARCHAR(4000), @stringToSearchTo NVARCHAR(4000)) RETURNS NVARCHAR(4000) AS BEGIN DECLARE @retVal NVARCHAR(4000) DECLARE @stringToSearchFromSearchPattern NVARCHAR(4000) = '%' + @stringToSearchFrom + '%' SELECT @retVal = SUBSTRING ( @inputString, PATINDEX(@stringToSearchFromSearchPattern, @inputString) + LEN(@stringToSearchFrom), (CASE CHARINDEX( @stringToSearchTo, @inputString, PATINDEX(@stringToSearchFromSearchPattern, @inputString) + LEN(@stringToSearchFrom)) WHEN 0 THEN LEN(@inputString) + 1 ELSE CHARINDEX( @stringToSearchTo, @inputString, PATINDEX(@stringToSearchFromSearchPattern, @inputString) + LEN(@stringToSearchFrom)) END) - (PATINDEX(@stringToSearchFromSearchPattern, @inputString) + LEN(@stringToSearchFrom)) ) RETURN @retVal END
용법:
SELECT dbo.getValueBetweenTwoStrings('images/test.jpg','/','.') AS MyResult
-
==============================
10.이 시도 할 수 있습니다 :
이 시도 할 수 있습니다 :
Declare @test varchar(100)='images/test.jpg' Select REPLACE(RIGHT(@test,charindex('/',reverse(@test))-1),'.jpg','')
-
==============================
11.쿼리 아래 당신이 이전에 데이터를 제공합니다 '-' 전직 W12345A-4S
쿼리 아래 당신이 이전에 데이터를 제공합니다 '-' 전직 W12345A-4S
SELECT SUBSTRING(Column_Name,0, CHARINDEX('-',Column_Name)) as 'new_name' from [abc].
출력 - W12345A
-
==============================
12.Josien의 작품에서 영감을, 나는 단순화에 대해 궁금해했다.
Josien의 작품에서 영감을, 나는 단순화에 대해 궁금해했다.
이 또한 일이겠습니까? 훨씬 짧은 :
SELECT SUBSTRING(col, CHARINDEX ('/', col) + 1, CHARINDEX ('.', col) - CHARINDEX ('/', col) - 1);
(I는 그 자체로 문제가 내 회사의 SQL 서버에 있기 때문에 바로 문제의 지금 테스트 할 수 없습니다)
-
==============================
13.
select LEFT((RIGHT(a.name,((CHARINDEX('/', name))+1))),((CHARINDEX('.', (RIGHT(a.name, ((CHARINDEX('/', name))+1)))))-1)) splitstring, a.name from (select 'images/test.jpg' as name)a
-
==============================
14.좀 잘못된 길이 오류를 얻었다. 나는이 기능을 만든 그래서,이 길이 문제를주지해야한다. 당신이 검색 텍스트를 찾을 수없는 경우 또한 그것은 NULL을 반환합니다.
좀 잘못된 길이 오류를 얻었다. 나는이 기능을 만든 그래서,이 길이 문제를주지해야한다. 당신이 검색 텍스트를 찾을 수없는 경우 또한 그것은 NULL을 반환합니다.
CREATE FUNCTION [FN].[SearchTextGetBetweenStartAndStop](@string varchar(max),@SearchStringToStart varchar(max),@SearchStringToStop varchar(max)) RETURNS varchar(max) BEGIN SET @string = CASE WHEN CHARINDEX(@SearchStringToStart,@string) = 0 OR CHARINDEX(@SearchStringToStop,RIGHT(@string,LEN(@string) - CHARINDEX(@SearchStringToStart,@string) + 1 - LEN(@SearchStringToStart))) = 0 THEN NULL ELSE SUBSTRING(@string ,CHARINDEX(@SearchStringToStart,@string) + LEN(@SearchStringToStart) + 1 ,(CHARINDEX(@SearchStringToStop,RIGHT(@string,LEN(@string) - CHARINDEX(@SearchStringToStart,@string) + 1 - LEN(@SearchStringToStart)))-2) ) END RETURN @string END
from https://stackoverflow.com/questions/11010453/get-everything-after-and-before-certain-character-in-sql-server by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 조건이 동일하지 않은 SQL? (0) | 2020.07.23 |
---|---|
[SQL] 오라클 테이블의 재 순서는 열 (0) | 2020.07.23 |
[SQL] SQLAlchemy의를 통해 임의의 행을 얻기 (0) | 2020.07.23 |
[SQL] MySQL의에로 선택 (0) | 2020.07.23 |
[SQL] INSERT INTO 대 INSERT (0) | 2020.07.23 |