A következő poszt alapötlete igazából azok számára lesz azonnal érthető, akik mondjuk SQL-lekérdezéseket is írnak vagy használnak, de a felvetett problémára adott ötletek nagy valószínűséggel olyan kérdésekben is segítséget nyújtanak, amelynek nem kötődnek az SQL-hez. Tegyük fel a következő kérdést: ha akarunk egy SQL-lekérdezést írni, amelyben szerepel egy IN operátor is, vajon mi a legegyszerűbb megoldás, hogy rengeteg értéket be tudjunk tenni az IN mögé a zárójelbe?
Adott tehát a következő példa, értékek felsorolása, amelyeket az IN mögé szeretnénk beerőltetni:
Az első ötlet, ami beugrik a többségnek, egy sima összefűzés függvény nélkül, szimplán
="'"&A3"',"
használatával.
Ha ezt "lehúzzuk" (automatikus kitöltés), látjuk is szépen az eredményt, ezt már csak be kell másolnunk mondjuk az SQL Developerünkbe az IN mögé, úgy hogy az első és utolsó értékünk elé és mögé egy zárójelet is pakolunk:
Egy másik megoldás lehet az Excel 2016-os verziójában bevezetett TEXTJOIN funkció, amely több tartományban, cellában szereplő értéket fűz össze elválasztók (delimiter) alapján. Az első paramétereként adjuk meg az elválasztót, a második kötelező paraméter azt határozza meg, hogy üres cellákat kihagyjunk-e vagy sem az összefűzésből, a harmadik kötelező paraméter pedig maga az összefűzendő szöveg első értéke vagy akár egy cellatartomány. Vannak még opcionális paraméterek, amelyek mindegyike az összefűzendő cellákra utal, tehát ha a harmadik paraméterként nem tartományt adunk meg, hanem egy cellát, akkor további paraméterekben írnunk kell tovább az összefűzendő értékeket. Azaz a mostani példán például
=TEXTJOIN(CHAR(10),TRUE,A:A)
azt fogja jelenteni, hogy az ENTER (erre utal a Char(10), mert a speciális elválasztókat, mint egy új sor vagy egy sortörés, csak karakterszáma alapján tudunk beadni) delimiterrel elválasztott cellákat fogja összefűzni, üres cellák kihagyásával az A oszlopban.
És látható az eredmény is:
És ezt pedig az elsőként felvázolt ötlettel kombinálva szépen elő tudjuk készíteni az IN mögé bemásolásra, valahogy így:
És ezután már meg is van a kész eredményünk:
Persze van még opcióként a beépített CONCAT vagy CONCATENATE függvény is, de mindkettőnél alapvetően az a fő probléma, hogy nagyon hosszú értéksor esetén nagyjából lehetetlen a használata, mert túl sok a manuális munka vele:
Egyébként a CONCAT és a CONCATENATE első ránézésre teljesen egyformának tűnik, de nem csak ránézésre egyformák, pontosan ugyanazt tudják, előbbi a funkció nevének lerövidítése érdekében került be "új funkcióként" az Excel 2016-os verziójába illetve nagy valószínűséggel azért, hogy a Google Sheets által is használt, ugyanilyen nevű funkcióval azonos néven fusson. A CONCATENATE pedig azért maradt benne, hogy megmaradjon a kompatibilitás az Excel korábbi verzióival is.
Mindenesetre azt pedig a fentiek ismeretében beláthatjuk elég gyorsan, hogy a TEXTJOIN elég jó barátunk, hiszen alig egy-két kattintással akár sok ezer értéket is össze tudunk fűzni pillanatok alatt.