Din păcate XML-ul tău nu se vede prea bine (am noroc că sunt moderator și am putut să-i dau "Edit" ca să văd XML-ul).
Oricum, ideea e că acel [28] nu-i spune că vrei să-ți dea nodul care are atributul "m" egal cu 28, ci că vrei al 28-lea nod de genul respectiv. De altfel, poți verifica treaba asta dacă încerci cu [12]: nu îți rezultă valoarea "224", ci "2". Pentru ceea ce vrei tu, încearcă ceva de genul:
SELECT XMLRECORD.value('row[1]/c167[@m=12][1]', 'varchar(100)'), * from TBL
Răzvan