Ersetzen Sie Zeichen in Zeichenfolgen durch neue Zeilen und TabulatorenIch schreibe eine OLEDB-Abfrage, bei der der SQL-Befehl in einer Zeichenfolge enthalten sein muss, die keine Zeilenenden oder Tabulatoren, sondern nur Leerzeichen enthält.
Das Folgende funktioniert, aber ich kann nicht herausfinden, wie ich das machen kann, ohne die „leeren“ Zeichenfolgen erstellen zu müssen.
Der Benutzer kann die SQL-Abfrage mithilfe von JMP ändern, das auf Windows-Computern installiert ist.
SQL_query = "SELECT a, b, c
FROM mytable
WHERE a = 'alice'
AND b BETWEEN '86' AND '91'";
// Cleansing strings (inputs need to be in one line)
newline = "
";
tab = " ";
space = " ";
SQL_query = substitute(SQL_query, tab, space);
SQL_query = substitute(SQL_query, newline, space);
DatenzugriffBetreff: Ersetzen Sie Zeichen in Zeichenfolgen durch neue Zeilen und TabulatorenDas ist seltsam. Es gibt keine Besonderheiten an einem Add-In, die dies beeinflussen könnten. Können Sie nähere Angaben dazu machen, was genau nicht funktioniert?
Mithilfe der Hex()-Funktion können Sie möglicherweise genau erkennen, welche (unsichtbaren) Zeichen in Ihrer Eingabezeichenfolge enthalten sind.
tab = "\!t";
Show( Hex( tab ) );
return = "\!r";
Show( Hex( return ) );
SQL_query =
"\[SELECT a, b, c
FROM mytable
WHERE a = 'alice'
AND b BETWEEN '86' AND '91']\";
Show( Hex( SQL_query ) );
Ergebnisse:
Hex(tab) = "09";
Hex(return) = "0D";
Hex(SQL_query) = "53454C45435420612C20622C20630D0946524F4D206D797461626C650D0957484552452061203D2027616C696365270D0909414E442062204245545745454E202738362720414E442027393127";
Betreff: Ersetzen Sie Zeichen in Zeichenfolgen durch neue Zeilen und TabulatorenAus irgendeinem Grund scheint keine dieser Ersetzungen zu funktionieren, wenn ich mich in einem Add-In entwickle (?)
Wenn ich den Code kopiere und einfüge, funktioniert die Ersetzung.
Betreff: Ersetzen Sie Zeichen in Zeichenfolgen durch neue Zeilen und TabulatorenSie können verwenden Escape-Sequenzen für diese Sonderzeichen.
SQL_query =
"SELECT a, b, c
FROM mytable
WHERE a = 'alice'
AND b BETWEEN '86' AND '91'";
SQL_query = Substitute( SQL_query,
"\!t", " ",
"\!r", " "
);
Vielleicht finden Sie auch die Ersetzen in() Funktion nützlich. Dadurch wird die Ersetzung an Ort und Stelle durchgeführt und die Zuweisung zurück zur ursprünglichen Zeichenfolge vermieden.
Substitute Into( SQL_query,
"\!t", " ",
"\!r", " "
);