I can't think of any database query--or any computer language, for that matter--that would see "D.Brown" and "Dave Brown" as the same, or even as very similar.
Yes, you could write code that would split them both apart, producing "D." and "Brown" versus "Dave" and "Brown", and presumably then find that the two "Brown"s matched, but "D." versus "Dave" wouldn't match much better than "Vern" versus "Dave" (at least with Vern and Dave, two letters match, not just one). Granted, you could prejudice the comparison to, say, insist that the first letters will be the same.
But then let's say you have "D. Brown", "Dave Brown", "Dan Brown", and "Dale Brown". How would you expect the computer to pick the best pair match of those? Or should it even pick a match from those, at all?
For that matter, how would a human being pick the best pair match from those four?
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.