-1

私のデータはそのようになります

IPDocument/XR/test_20120409_clearGAC.txt
IPDocument/XR/test_20120409_clearGAC_05.txt
IPDocument/XR/test_20120409_clearGAC_01.txt

上記からclearGAC.txtを抽出したいと思います。SQL で部分文字列を使用するにはどうすればよいですか?

4

2 に答える 2

2

_05 と _01 が必要だと思います- 質問は明確ではありません。

DECLARE @var VARCHAR(250)

DECLARE @table TABLE ( val VARCHAR(250) )
INSERT  INTO @table
        SELECT  'IPDocument/XR/test_20120409_clearGAC_01.txt'
        UNION ALL
        SELECT  'IPDocument/XR/test_20120409_clearGAC_05.txt'
        UNION ALL
        SELECT  'IPDocument/XR/test_20120409_clearGAC.txt' 


SELECT  SUBSTRING(val, CHARINDEX('clearGAC', val), 50),
        SUBSTRING(SUBSTRING(val, CHARINDEX('_', val)+1, 50), CHARINDEX('_', SUBSTRING(val, CHARINDEX('_', val)+1, 50))+1, 50)
FROM    @table

これを返します:

clearGAC_01.txt
clearGAC_05.txt
clearGAC.txt

CHARDINDEX の 3 番目のパラメーターは、長さより大きくすることができます。

編集:clearGAC名前がわからない場合は、ロジックを追加しました

あなたのコメントを読んだ後、あなたはこれが欲しいかもしれません:

ClearGAC.txt を渡し、それが DB にあるかどうかを確認します。この ClearGAC.txt は、上記のコードのように名前を付けることができます。

DECLARE @var VARCHAR(250)

DECLARE @table TABLE ( val VARCHAR(250) )
INSERT  INTO @table
        SELECT  'IPDocument/XR/test_20120409_clearGAC_01.txt'
        UNION ALL
        SELECT  'IPDocument/XR/test_20120409_clearGAC_05.txt'
        UNION ALL
        SELECT  'IPDocument/XR/test_20120409_clearGAC.txt' 


SELECT  *
FROM    @table
WHERE   val LIKE '%clearGAC%.txt'
于 2012-04-23T13:41:21.917 に答える
0
SELECT SUBSTRING('IPDocument/XR/test_20120409_clearGAC.txt', CHARINDEX('09_','IPDocument/XR/test_20120409_clearGAC.txt')+3, 100)

結果: clearGAC.txt

于 2012-04-23T13:40:26.273 に答える