05-16-2022 07:13 AM
Hello,
I’m wondering if there is any elegant way in the Snaplogic Expression Language to achieve String interpolation? E.g. similar to f-strings in Python?
f"This is a test string including a {variable}"
The method I’m using at the moment is string concatenation, e.g.:
"SELECT " + [lib.env.salesforceGPDeliveryNumberField,lib.env.salesforceGPOperationsNumberField,"Id"].toString() + " FROM Opportunity WHERE " + lib.env.salesforceOpportunityIdField + " = '" + _opportunityId + "'"
This becomes fairly tedious with longer queries and prone to overlooking the one or other space or quote.
Concat might be a bit better than that, but still is somewhat tedious in comparison to string interpolation.
Is there a feature that I’ve overlooked or is there just no user-friendly method available?
Best regards
Thomas
05-17-2022 05:03 AM
Hi @Henchway,
You can also use the built-in function .sprintf()
.
For example, you could use the following expression:
"SELECT %s,%s,Id FROM Opportunity WHERE %s =\'%s\'".sprintf("one", "two", "someId", "123")
Which translates to:
SELECT one,two,Id FROM Opportunity WHERE someId ='123'
05-18-2022 08:35 AM
Thank you both, I’ll give both solutions a try once i’m back in the office.
07-27-2022 02:25 PM
Would using eval() work for you? There’s still some concatenation involved, but I’m not really sure how you could get away from it entirely.
07-28-2022 04:40 AM
I think that @j.angelevski has a great solution for you with using the sprintf() String method.
Alternatively, if you are querying from a database using an Execute snap (e.g. SQL Server - Execute), you can use variable names without enabling the expression evaluation in the SQL Statement expression box. For example, here is my input document to a SQL Server Execute snap:
And the SQL Server Execute settings:
Produce this result:
Note that the database snaps are some of the only snaps that do this (to my knowledge).