On Sun, Apr 14, 2019 at 5:40 AM x <tam118...@hotmail.com> wrote: > On second thoughts JD, can’t use strlen or sqlite3_value_bytes in case > values(1) contains more than a single unicode character. This looks OK. > > Bytes are what you need though; it doesn't matter how big the buffer is, as long as you have all of it.
As long as you use _value_bytes after _text you're fine... so if any conversion did take place the value will be right of the last returned string type. > # define CHARLEN(x) !(x & 128) ? 1 : (x & 16 ? 4 : (x & 32 ? 3 : 2)) > > char *c = (char *)sqlite3_value_text(values[0]); > char *Sep = (char *)sqlite3_value_text(values[1]); > int Count=0, Len, SepLen = CHARLEN(*Sep); > > while (*c) > { > if ((Len = CHARLEN(*c)) == SepLen && memcmp(c, Sep, Len)==0) > Count++; // at start of Sep > c += Len; > } > sqlite3_result_int(ctx, Count); > > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users