串一串我的數據會像如何在SQL
IPDocument/XR/test_20120409_clearGAC.txt
IPDocument/XR/test_20120409_clearGAC_05.txt
IPDocument/XR/test_20120409_clearGAC_01.txt
我想從上面提取clearGAC.txt。 如何在SQL中使用子字符串?
串一串我的數據會像如何在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第三個參數可以比長度大。
編輯:我加的邏輯,如果你不知道,如果clearGAC
是名
閱讀您的評論後,你可能只是想這樣的:
我要通過ClearGAC。 txt並查看它是否在數據庫中。這個 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
謝謝。但我只會知道clearGAC.txt的名稱。不是確切的日期。 – kevin 2012-04-23 13:51:58
您對每條記錄的結果是什麼? – 2012-04-23 13:42:36
什麼數據庫引擎? – 2012-04-23 13:43:51
@TimSchmelter - >你是什麼意思? – kevin 2012-04-23 13:45:48