关于#sql#的问题,如何解决?

NAMECODEDATE
张三三3100111955030732533304010252012-7-1
李四四3100111955012232463304010252012-7-1
王五3100111951092446163304010052012-6-20
马六3100111955032124283304010102012-6-20

表名:test_charge
对上表的人按出生年份进行分组查询


create function dbo.GetSFZFromName(@str nvarchar(100))
  returns bigint
as
begin
   while patindex('%[^0-9]%',@str)>0
  begin
  set @str=stuff(@str,patindex('%[^0-9]%',@str),1,'')
  end
  return convert(bigint,@str)
End

SELECT name AS  ‘姓名’ FROM test_charge
GROUP BY YEAR
WHERE YEAR =
SELECT SUBSTRING(
'SELECT dbo.GetSFZFromName (name) FROM  test_charge',7,4
)
)

这是自己写的
回过来看看自己都晕了!

select name from test_charge group by substr(date,1,4),name;