On 2018/07/27 11:15 AM, Bart Smissaert wrote:
xxx is an identifier. It has no meaning at all in SQL and needs to be
replaced by the app.

Ok, so your app needs to replace xxx with 'A', 'B', 'C' then?

Well, that depends on what language your App is?

For example, assuming the query 'SELECT * FROM table1 WHERE a IN (xxx);' is in variable q:

Most languages have some standard function akin to:
 str_replace(q, "xxx", "'A', 'B', 'C'");       - if the language uses double-quotes to quote strings (like VB or PHP), or  str_replace(q, 'xxx', '''A'', ''B'', ''C'''); - if the language uses single-quotes (like most other). (I assume you already knew this already and the question is more towards the next bit, but I'm mentioning it since it was asked, and in case you, or someone else reading this, did not).

To get the string 'A', 'B', 'C' into a field in a table (from where you might query it to replace it with your app as above), that would be:

INSERT INTO t(SearchStr) VALUES ('''A'', ''B'', ''C''');

which is essentially the same as 'A', 'B', 'C' where every single quote is duplicated and then all of it is enclosed with an added pair of single quotes.

Note that if this is a string inside your single-quote string quoting program language, it has to be escaped again, which essentially repeats the above process to yield something like:

sQuery = 'INSERT INTO t(SearchStr) VALUES (''''''A'''', ''''B'''', ''''C'''''');';

Though your programming language should have some form of QuotedStr() function. If not, this should be easy to translate to your language of choice:

function QuotedStr(inputStr) string {
  s = inputStr;
  for(i = len(s); i > 0; i--) {
    if ( s[i] = Char(39) )  { insert(s, i, ''''); }
  }
  QuotedStr = '''' + s + '''';
}

Note that '''' and Char(39) both denote a single single-quote character in string format in a language that uses single quotes to quote strings.
This could make life easier in that you can simply say something like:

sQuery = 'INSERT INTO t(SearchStr) VALUES (' + QuotedStr('''A'', ''B'', ''C''') + ');';

or even (if you prefer bloat over obscurity):

sQuery = 'INSERT INTO t(SearchStr) VALUES (' + QuotedStr( QuotedStr('A') + ', ' + QuotedStr('B') + ',  '+ QuotedStr('C') ) + ');';

Hope that makes some sense...
Ryan

_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to