Pattern matching in a shell script?

I'm looking for a way to match a particular string in another string and if a match is found execute some command.

I found the case statement can be used like this;

case word in
    [ pattern [ | pattern ... ] )
         command ;; ] ...
    esac

If my string to find is say "foo" in the string $mystring presumably I want something like this;

case foo in
    [ *$mystring* ] )
         command ;; ] ...
    esac

But my knowledge of regex etc isn't great - can I even do what I want to do with a case statement?

Cheers.

case $mystring in
    *foo* ) command ... ;;
esac