68

データベースに次のエントリを取得しました。

images/test.jpg

エントリをトリミングしたいので、次のようになります。test

だから基本的に、私は/前後のすべてが欲しい.

どうすれば解決できますか?

4

17 に答える 17

73

次の関数を使用します

left(@test, charindex('/', @test) - 1)
于 2014-05-31T08:20:56.973 に答える
68

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);
于 2012-06-13T08:01:24.007 に答える
31

SELECT SUBSTRING(ParentBGBU,0,CHARINDEX('/',ParentBGBU,0)) FROM dbo.tblHCMMaster;

SELECT SUBSTRING(ParentBGBU,CHARINDEX('-',ParentBGBU)+1,LEN(ParentBGBU)) FROM dbo.tblHCMMaster
于 2017-01-04T13:13:57.767 に答える
9

---- / を含む / の前の文字を選択

select SUBSTRING ('abcde/wxyz',0,CHARINDEX('/','abcde/wxyz')+1)

-- / を含む / の後の文字を選択

select SUBSTRING('abcde/wxyz',CHARINDEX('/','abcde/wxyz'),LEN('abcde/wxyz')) 
于 2019-01-08T11:33:24.990 に答える
6
 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
于 2012-06-13T08:38:04.717 に答える
3

より一般的な方法を作成しました:

それで :

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))
       )
于 2016-09-03T07:58:38.760 に答える
2

レポートの 1 つでこれを実行したところ、非常に簡単でした。

これを試して:

=MID(Fields!.Value,8,4)

注:取得しようとしていた値が定数であったため、取得しようとしている値も定数であるかどうかわからないため、これはうまくいきました。

于 2015-04-28T14:18:53.970 に答える
0

以下のクエリは、「-」の前にデータを取得します Ex- W12345A-4S

SELECT SUBSTRING(Column_Name,0, CHARINDEX('-',Column_Name))  as 'new_name'
from [abc].

出力 - W12345A

于 2017-08-20T11:21:15.817 に答える