T-SQLのCHARINDEXとSUBSTRINGの機能を組み合わせることで、これを簡単に実現できます。
これは少しハッキリですが、2つのアンダースコアと1つのピリオドの存在のみに依存します。例えば
EDIT:処理するために、更新された変数下線出現:%_%_%.%
拡張子は任意の長さだけでなく、最終的にサブすることができ
create function udfGetFileNameSubstring(@val as varchar(50))
returns varchar(50)
begin
--declare @val varchar(50)
--set @val = 'Attachments_21046_123400100473.pdf'
declare @uidx int
-- establish the index of the 2nd underscore
set @uidx = LEN(@val) - CHARINDEX('_', REVERSE(@val)) + 1
declare @pidx int
-- establish the index of the period
set @pidx = CHARINDEX('.', @val)
return SUBSTRING(@val, @uidx + 1, @pidx - @uidx - 1)
end
-- usage: SELECT dbo.udfGetFileNameSubstring(col_name) FROM table_name
-- sample: SELECT dbo.udfGetFileNameSubstring('Attachments_21046_123400100473.pdf')
-- OUTPUT: 123400100473
T-SQLは、確かに省略することができ、私はそれをラップしますあなたのクエリーでクリーンな使用のためのUDFで。
形式は常に同じです、実際には "Attachments_IDNumber_SecondNumber.PDF" – RogueSpear00
@ RogueSpear00ああ、まあ...とにかく私はそれを残して、とにかく、私が先頭のアンダースコアの数を知っても、それはどんなに美しく見えません。 –
これは機能しました。今私はその声明を理解しなければならない。 – RogueSpear00