Yep, “?” is probably more useful if you know where you word starts/ends.
For anyone not used to wildcards:
You use * (asterisk) for an unknown number of characters (kanji, kana, numbers…), so any number of characters (0 included)
You use ? (question mark) for only and exactly one unknown character (kanji/kana or whatever). Not 0, not 2, not 7. Only 1.
The difference is in the number of unknown characters.
If you are thinking there’s only one unknown character, we should use “?”, it’s true, but some times we don’t know where the word begins or ends so using just “?” would exclude all cases where there’s more than one.
For example (bad example, but I couldn’t find a decent one), let’s say we found 宣言型言語 (declarative language) , let’s say we can’t read the second character (言) and we don’t really know where it begins/ends.
We could look up :
宣? #words (27 results)
but this assumes that our word starts with 宣 (true) and that it’s made up of these two kanji alone (false), so we wouldn’t find our word. It would be excluded from the results.
On the other hand, using
宣* #words (105 results)
assumes that our word starts with 宣 (true). It doesn’t assume anything about where it ends, so it includes our word.
And so on…it takes a little bit of practice.