我的数据就像那样
IPDocument/XR/test_20120409_clearGAC.txt
IPDocument/XR/test_20120409_clearGAC_05.txt
IPDocument/XR/test_20120409_clearGAC_01.txt
我想从上面提取 clearGAC.txt 。 如何在SQL中使用子字符串?
答案 0 :(得分: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中的第三个参数可能大于长度。
编辑:如果你不知道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'
答案 1 :(得分:0)
SELECT SUBSTRING('IPDocument/XR/test_20120409_clearGAC.txt', CHARINDEX('09_','IPDocument/XR/test_20120409_clearGAC.txt')+3, 100)
结果: clearGAC.txt