Come posso sfuggire a "=" come parte del nome di una colonna?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Come posso sfuggire a "=" come parte del nome di una colonna?
Ho bisogno di implementare un'istruzione "seleziona dove" e la sto costruendo come una stringa, che coinvolge più nomi di colonna. Ma quando valuta, sta tentando di interpretare "=" come un'assegnazione. I nomi delle mie colonne sono come: "COND=TEMP".
Di seguito la sezione dello script che utilizzo:
seleziona_stringa = ":Nome test == benchNameToCompare" ;
//Per ogni colonna nella tabella della mappa, se il nome della colonna è un COND aggiungerlo ai criteri di selezione
Per ( j = 1 , j <= numOfColumns , j ++,
Tabella dati corrente ( correlazioneMapTable ) ;
nomecolonnacorrente = correlazioneMapTable << Ottieni i nomi delle colonne () ;
Se ( Contiene ( nomecolonnacorrente [ j ] , "COND_" ) > 0 ,
il valore = nomecolonnacorrente [ j ][ io ] ;
colName = nomecolonnacorrente [ j ] ;
seleziona_stringa = seleziona_stringa || " & As Column(correlationMapTable," || car ( nomecolonnacorrente [ j ]) || ") == " || car ( nomecolonnacorrente [ j ][ io ]) ;
) ;
) ;
seleziona_stringa = "benchDataTable << seleziona dove(" || seleziona_stringa || ")" ;
eval ( analizzare ( seleziona_stringa )) ; //Ecco le lamentele se ho "=" come parte del nome della colonna.
benchDataTable << Sottoinsieme ((( Righe selezionate ) , Nome tabella di output ( "Tavolo da banco filtrato" )) ;
Grazie in anticipo!
Re: Come posso sfuggire a "=" come parte del nome di una colonna?Sì, virgolette.Grazie per la cattura.
Per saperne di più sui caratteri di escape e sulle sfumature di JSL, puoi fare riferimento alla Scripting Guide che è davvero ben messa insieme.Aiuto >> Libri >> Guida agli script.(I caratteri di escape sono a p.87).Se ti stai solo chiedendo la sintassi, l'indice di script è più utile.Aiuto >> Indice degli script.
Un paio di cose da sottolineare,
Per i numeri nelle istruzioni If(), JSL risponde sinceramente a qualsiasi cosa diversa da 0. Quindi Se ( Contiene ( nomecolonnacorrente [ j ] , "COND_" ) > 0, è uguale a Se ( Contiene ( nomecolonnacorrente [ j ] , "COND_" ) ,
Questo:
//Per ogni colonna nella tabella della mappa, se il nome della colonna è un COND aggiungerlo ai criteri di selezione
Per ( j = 1 , j <= numOfColumns , j ++,
Tabella dati corrente ( correlazioneMapTable ) ;
nomecolonnacorrente = correlazioneMapTable << Ottieni i nomi delle colonne () ;
Se ( Contiene ( nomecolonnacorrente [ j ] , "COND_" ) > 0 ,
il valore = nomecolonnacorrente [ j ][ io ] ;
colName = nomecolonnacorrente [ j ] ;
sarebbe meglio scrivere:
//Per ogni colonna nella tabella della mappa, se il nome della colonna è un COND aggiungerlo ai criteri di selezione
Per ( j = 1 , j <= numOfColumns , j ++,
colName = Colonna( correlazioneMapTable, j) << Ottieni nome ;
Se ( Contiene ( colName , "COND_" ) ,
Re: Come posso sfuggire a "=" come parte del nome di una colonna?Ehi, breinoso,
Sì, non sono in giro da abbastanza tempo per conoscere l'origine dei caratteri di escape in JSL, ma in effetti iniziano con "\!".Per inserire una nuova riga in una stringa, è "\!n".Per evitare che una citazione venga vista da JMP come la fine di una stringa, rendila \!". (E penso che msharp volesse dire "ciò di cui hai bisogno per sfuggire è Virgolette ").
E sì, passare da altre lingue a JSL può essere un po' scoraggiante ;-).
HTH,
Eric
Re: Come posso sfuggire a "=" come parte del nome di una colonna?Ciao msharp,
Grazie per aver dedicato del tempo per rispondere. Quindi potresti chiarire che la sequenza di escape richiesta è \! \! ?
Come programmatore C#, mi fa molto male la testa solo imparando JSL 
Saluti,
B
Re: Come posso sfuggire a "=" come parte del nome di una colonna?Sarò onesto, questo script ha molti problemi.Mi fa male la testa solo al pensiero di eseguire il debug.
Quindi non lo farò, ma essenzialmente il tuo problema è questo:
= non ha bisogno di essere evaso è ciò di cui hai bisogno per scappare parentesi Virgolette.Alias:
eval ( analizzare ( "dt << Seleziona dove(Colonna(" cond = Temp ") == 2)" )) ;
deve diventare:
eval ( analizzare ( "dt << Seleziona dove(Colonna(\!"Cond=Temp\!") == 2)" )) ;