Using bash and GNU grep:
partial() {
local prefix suffix
prefix=$( grep -oP ".*(?=$2)" <<<"$1" ) || return 1
suffix=$( grep -oP "(?<=$2).*" <<<"$1" )
echo "${prefix//[^,]/}${2}${suffix//[^,]/}"
}
partial "H,A,D,E,R,T,Y,B,D" "B,D"
partial "H,A,D,E,R,T,Y,B,D" "A,D,E"
partial "H,A,D,E,R,T,Y,B,D" "A,D,E,"
partial "H,A,D,E,R,T,Y,B,D" "foo" || echo "foo is not a substring"
,,,,,,,B,D
,A,D,E,,,,,
,A,D,E,,,,,
foo is not a substring
A version that does not rely on grep:
partial () {
local prefix suffix
prefix=${1%%${2}*}
[[ $prefix == "$1" ]] && return 1
suffix=${1##*${2}}
echo "${prefix//[^,]/}${2}${suffix//[^,]/}"
}