Modèle de caractère d'échappement JSL pour la virgule (,)Salut Quelqu'un peut-il me dire comment échapper à la virgule (,) d'une chaîne. Je le connais pour le double quate (") c'est \! mais je ne suis pas au courant pour la virgule (,)
Re : Modèle de caractère d'échappement JSL pour la virgule (,)Salut @dilipkumar ,
Cela semble être ce que fait votre jsl initial. Je ne suis pas sûr de la façon dont une sortie comme vous l'avez dit, 3C22, Y MERS,.AAA-.75YIN , permettra à la requête d'identifier quelle partie de la chaîne correspond à chaque variable. L'ajout de guillemets était une suggestion ailleurs pour aider à distinguer les composants individuels puisque la virgule seule ne peut pas, mais encore une fois, n'étant pas bien familiarisé avec SQL, je ne sais pas si c'est la méthode la meilleure ou même la plus viable.
@julien
Re : Modèle de caractère d'échappement JSL pour la virgule (,)@julien
Salut, Merci pour l'info.
Oui, vous avez bien compris mon problème. Mais je n'ai pas besoin de guillemets doubles pour être présent en sortie
MN <SPAN class="token operator">=</SPAN> <SPAN class="token string">" \!"3C22\!",\!"Y MERS,.AAA-.75YIN\!" "</SPAN><SPAN class="token punctuation">;</SPAN>
<SPAN class="token comment">// which stores the string, including quotes:</SPAN>
<SPAN class="token comment">// "3C22" , "Y MERS,.AAA-.75YIN" i </SPAN>
j'ai seulement besoin<SPAN class="token comment"> 3C22</SPAN> ,<SPAN class="token comment"> Y MERS,.AAA-.75YIN</SPAN> comme sortie.
veuillez suggérer.
Salutations,
Dilip
Re : Modèle de caractère d'échappement JSL pour la virgule (,)La façon de déboguer ceci consiste à créer une commande fonctionnelle dans SQL Server natif (je pense que c'est la base de données que vous utilisez).Après cela, il n'est pas difficile de créer la même chaîne en JSL.J'ai une suggestion pour rendre le code un peu plus facile à lire.Si vous utilisez evalinsert et entourez la variable MN de caractères caret (^), cela accomplira la même chose :
sqlQuery = evalinsert("execute [dbo].[ABC] @MN = '^MN^'");
print(sqlquery);
Le résultat est:
"execute [dbo].[ABC] @MN = '3C22,Y MERS,.AAA-.75YIN'"
Je pense que le problème est que la syntaxe de SQL Server est incorrecte.Vous définissez la variable MN égale à la chaîne entière.Un expert SQL Server peut-il intervenir ici ?
Re : Modèle de caractère d'échappement JSL pour la virgule (,)Salut @dilipkumar ,
Je pense comprendre le problème auquel vous êtes confronté actuellement. Il semble que le problème soit que la base de données analyse les virgules dans votre chaîne de requête d'une manière que vous ne souhaitez pas, et non JMP.SQL n'est pas ma spécialité, mais j'ai fait quelques recherches et je suis tombé sur ce post qui traitait des caractères d'échappement, comme les virgules, dans les instructions SQL. La suggestion est d'ajouter des guillemets doubles pour aider à identifier les clauses distinctes, car la virgule seule n'est pas définitive si vous utilisez des virgules ailleurs. Dans votre exemple, cela pourrait ressembler à ceci lors de la définition de votre variable MN, même si je dois dire que je n'ai pas de moyen de tester si cela fonctionnera, je le propose donc uniquement à titre de suggestion possible :
MN = " \!"3C22\!",\!"Y MERS,.AAA-.75YIN\!" ";
// which stores the string, including quotes:
// "3C22" , "Y MERS,.AAA-.75YIN"
@julien
Re : Modèle de caractère d'échappement JSL pour la virgule (,)En fait, je dois récupérer des données de la base de données, en fonction de la variable définie ci-dessous (MN). Si je passe le MN dans mon script jsl et que j'obtiens les données de 3C22, Y MERS,.AAA-.75YIN . comme sortie
//Create Database Connection
dbc = Create Database Connection(
"XXX",
)
MN = "3C22,Y MERS,.AAA-.75YIN";// where 3C22 is one input and 2nd input is Y MERS,.AAA-.75YIN"
dataTable = New Table( "RAW DATA");
ddt = Data Table( 1 );
//Execute SQL statements using this connection
sqlQuery = "execute [dbo].[ABC] @MN = '" || MN|| "'";
Salutations,
Dilip
Re : Modèle de caractère d'échappement JSL pour la virgule (,)Voici quelques utilisations du passage d'une variable x="abc,k,yz" ; en JSL, dont aucun ne provoque une erreur.Pouvez-vous être plus précis sur l'endroit où vous rencontrez un problème ?Je peux voir que cela pose un problème s'il est ajouté à une autre chaîne littérale sans la citer.
names default to here(1);
x= "abc,k,yz";
rr=function({y},show(y));
rr(x);
dt=new table(new column(x,formula(random uniform())));
dt<<ADD rows=""></ADD>Re : Modèle de caractère d'échappement JSL pour la virgule (,)Salut @dilipkumar ,
Sans voir davantage votre script, je ne peux pas dire pourquoi JMP traite cette variable de cette manière. En fait, je m'attendrais à ce que la chaîne entière soit toujours renvoyée, à moins que vous n'effectuiez un travail supplémentaire pour la démonter en fonction du délimiteur. Utilisez-vous une fonction telle que Word() pour décoller des morceaux de la chaîne X ? Si vous pouvez en partager davantage, je serai heureux de vous aider à comprendre cela. Alternativement, si vous souhaitez transmettre une seule variable, mais souhaitez un contrôle plus strict sur ce que vous référencez dans la variable, peut-être une liste. D'après votre description, il semble que vous souhaitiez qu'un élément soit "abc" et un autre élément "x, yz". Le jsl suivant pourrait vous aider :
x = {"abc", "k,yz"};
print( x[1] ); //"abc"
print( x[2] ); //k,yz"
@julien
Re : Modèle de caractère d'échappement JSL pour la virgule (,)En fait, j'ai défini une variable x= "abc,k,yz". où abc est une première chaîne où x,yz est la deuxième chaîne.
maintenant, si je transmets ces variables via mon script. pendant l'exécution, mon script prend la variable x comme abc, k et yz séparément.
Salutations,
DilipRe : Modèle de caractère d'échappement JSL pour la virgule (,)Salut @dilipkumar ,
Aucun caractère d'échappement n'est nécessaire pour une virgule, vous pouvez simplement les utiliser dans votre chaîne entre guillemets :
Pour référence, j'ai inclus les séquences d'échappement jsl au bas de cet article. Mais rencontrez-vous une situation dans laquelle une virgule dans une chaîne semble provoquer une sorte d’erreur ? Je suis sûr que nous pouvons aller au fond de ce qui se passe si vous pouvez développer.
@julien
