Try this:
CREATE TABLE TableName
(FieldName nvarchar(max))
INSERT INTO dbo.TableName
SELECT 'Test 1546 [JDFH]' UNION
SELECT 'Testing 562 [DFHI]' UNION
SELECT 'Test 316 [FF]' UNION
SELECT 'Testing 475 [KUGMF]' UNION
SELECT 'Test 5256 [DVDS]' UNION
SELECT 'Test 2565 [H]'
SELECT *
FROM dbo.TableName;
WITH cte as (
SELECT *, CHARINDEX('[',FieldName) as FirstPOS
, CHARINDEX(']',FieldName) as SecondPOS
FROM dbo.TableName
)
select FieldName
, CASE WHEN FirstPOS < SecondPOS
THEN SUBSTRING(FieldName,FirstPOS + 1, SecondPOS - FirstPOS - 1)
END AS FieldNameExtracted
FROM cte;