データベースに次のエントリを取得しました。
images/test.jpg
エントリをトリミングしたいので、次のようになります。test
だから基本的に、私は/
前後のすべてが欲しい.
どうすれば解決できますか?
データベースに次のエントリを取得しました。
images/test.jpg
エントリをトリミングしたいので、次のようになります。test
だから基本的に、私は/
前後のすべてが欲しい.
どうすれば解決できますか?
次の関数を使用します
left(@test, charindex('/', @test) - 1)
SQLを使用してテーブルからこれを取得したい場合は、次の関数を参照してください。SUBSTRING
およびCHARINDEX
。これらを使用して、エントリをトリミングできます。
可能なクエリは次のようになります(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/name.ext」の標準形式にも依存します。
編集:
これ(praveenに触発された)はより一般的で、異なる長さの拡張を扱います:
SELECT SUBSTRING(col, LEN(LEFT(col, CHARINDEX ('/', col))) + 1, LEN(col) - LEN(LEFT(col,
CHARINDEX ('/', col))) - LEN(RIGHT(col, LEN(col) - CHARINDEX ('.', col))) - 1);
前
SELECT SUBSTRING(ParentBGBU,0,CHARINDEX('/',ParentBGBU,0)) FROM dbo.tblHCMMaster;
後
SELECT SUBSTRING(ParentBGBU,CHARINDEX('-',ParentBGBU)+1,LEN(ParentBGBU)) FROM dbo.tblHCMMaster
---- / を含む / の前の文字を選択
select SUBSTRING ('abcde/wxyz',0,CHARINDEX('/','abcde/wxyz')+1)
-- / を含む / の後の文字を選択
select SUBSTRING('abcde/wxyz',CHARINDEX('/','abcde/wxyz'),LEN('abcde/wxyz'))
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
より一般的な方法を作成しました:
それで :
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))
)
レポートの 1 つでこれを実行したところ、非常に簡単でした。
これを試して:
=MID(Fields!.Value,8,4)
注:取得しようとしていた値が定数であったため、取得しようとしている値も定数であるかどうかわからないため、これはうまくいきました。
以下のクエリは、「-」の前にデータを取得します Ex- W12345A-4S
SELECT SUBSTRING(Column_Name,0, CHARINDEX('-',Column_Name)) as 'new_name'
from [abc].
出力 - W12345A