Flash storage is inherently different from spinning disk storage at a physical, and operational level. Unlike spinning disks, flash storage has a limited amount of write cycles. The solution to increasing the lifespan of the media to something usable that storage makers have come up with is called wear leveling. Essentially what this means is that when you write to a logical block on the disk twice, you're in all likelihood writing to two different physical blocks in the storage media.
The answers that claim that simply re-writing to the blocks is sufficient don't take this into account. You asked specifically about SD Cards, which according to this answer is sometimes implemented in SD cards, and other times not. So it's not so easy to give you a straight answer.
In addition, before physical block can be re-written to, it has to be erased first. This takes some extra time, and reduces performance. To make matters worse, the flash device has no idea which blocks are in use, and which aren't unless it's told This is what the trim command is used for. In a nutshell it tells the underlying media which blocks it can free up, so that the storage media can then perform the erase operation in the background during idle time. The trim command is specific to the ATA/SCSI bus, and again, you asked about SD cards. I don't know if there's an equivalent command for the SD card market, but it's something you should keep in mind.
The end result is that erasing in Flash storage isn't as simple as erasing a spinning HDD. The fact that you can't be assured you're writing to the same physical sector complicates matters greatly. The best you can hope for for erasing a file on an SD card is to write to every single sector on the drive.
Even this isn't perfect. Some manufacturers have spare sectors available when one sector wears out the logical block gets mapped to a new sector. So it's possible that even over-writing all logical sectors won't over-write all physical sectors. (BTW, the same is true for spinning disks).