私のデータはそのようになります
IPDocument/XR/test_20120409_clearGAC.txt
IPDocument/XR/test_20120409_clearGAC_05.txt
IPDocument/XR/test_20120409_clearGAC_01.txt
上記からclearGAC.txtを抽出したいと思います。SQL で部分文字列を使用するにはどうすればよいですか?
私のデータはそのようになります
IPDocument/XR/test_20120409_clearGAC.txt
IPDocument/XR/test_20120409_clearGAC_05.txt
IPDocument/XR/test_20120409_clearGAC_01.txt
上記からclearGAC.txtを抽出したいと思います。SQL で部分文字列を使用するにはどうすればよいですか?
_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'
SELECT SUBSTRING('IPDocument/XR/test_20120409_clearGAC.txt', CHARINDEX('09_','IPDocument/XR/test_20120409_clearGAC.txt')+3, 100)
結果: clearGAC.txt