It requires some trickery to do so and it only succeeds if the displayname of the user is unchanged between the time the comment was posted and now. If more names match (Multiple users with the dispayname Tim commented) will also lead to multiple rows here. I did read How do comment @replies work to finalize the logic.
The logic to get the user from a comment text is:
- find the first @
- find the the next space following the @
- take the characters between the @ and the space
- remove any spaces from the userdisplayname
- match the taken characters against the cleaned userdisplayname
The query looks like this:
select distinct c.id as [Comment Link]
, c.postid as [Post Link]
, u.id as [User Link]
, u.reputation as [Commenter Rep]
, owner.id as [User Link]
, owner.reputation as [Post Owner Rep]
, cu.id as [User Link]
, cu.reputation as [Reply-er Rep]
from comments c
inner join users u on u.id = c.userid
inner join posts p on p.id = c.postid
inner join users owner on owner.id = p.owneruserid
inner join comments creply on creply.postid = p.id and creply.id <> c.id
inner join users cu on cu.id = creply.userid
where p.id = ##PostId:int##
and charindex('@', c.[text]) > 0
and replace(cu.displayname,' ', '' ) like substring(c.[text],
charindex('@', c.[text])+1,
charindex(' ', c.[text], charindex('@', c.[text])) - (charindex('@', c.[text])+1)) +'%'
and produces this result per June, 19th 2014

1
Difficult; there's noNotifiedUserId
in the schema, so this would involve reproducing the parsing rules - which would be a nightmare in terms of scanning all previous comments, and still wouldn't work if the notified user changed usernames afterwards.2
That would involve splitting a string in SQL; not the easiest thing in the world.