Sustituir caracteres en cadenas con nuevas líneas y tabulacionesEstoy escribiendo una consulta OLEDB que necesita que el comando SQL esté en una cadena sin contener el final de las líneas o pestañas, solo espacios.
Lo siguiente funciona, pero no puedo encontrar cómo hacerlo sin tener que crear las cadenas "vacías".
El usuario puede modificar la consulta SQL, utilizando JMP instalado en máquinas Windows.
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);
ScriptingRe: Sustituir caracteres en cadenas con nuevas líneas y pestañasPuedes usar secuencias de escape para esos personajes especiales.
SQL_query =
"SELECT a, b, c
FROM mytable
WHERE a = 'alice'
AND b BETWEEN '86' AND '91'";
SQL_query = Substitute( SQL_query,
"\!t", " ",
"\!r", " "
);
También puede encontrar el Sustituir en () función útil. Hará la sustitución en su lugar y evitará que la asignación vuelva a la cadena original.
Substitute Into( SQL_query,
"\!t", " ",
"\!r", " "
);
Re: Sustituir caracteres en cadenas con nuevas líneas y pestañasPor alguna razón, ninguna de estas sustituciones parece funcionar cuando dentro de un complemento que estoy desarrollando (?)
Si copio y pego el código, la sustitución funciona.
Re: Sustituir caracteres en cadenas con nuevas líneas y pestañasEso es extraño. No hay nada especial en un complemento que pueda afectar esto. ¿Puede proporcionar más detalles sobre qué es exactamente lo que no funciona?
La función Hex () puede ayudarlo a ver exactamente qué caracteres (invisibles) hay en su cadena de entrada.
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 ) );
Resultados:
Hex(tab) = "09";
Hex(return) = "0D";
Hex(SQL_query) = "53454C45435420612C20622C20630D0946524F4D206D797461626C650D0957484552452061203D2027616C696365270D0909414E442062204245545745454E202738362720414E442027393127";