PW01-L07 · Zmena logiky

Pozícia znaku v texte

Pri náhrade CHARINDEX zohľadnite rozdielne číslovanie pozícií.

Špecifické pre ProjectWise
Výsledok migrácie

Vyhnete sa typickej chybe posunu o jeden znak.

ProjectWise kontext

Všeobecný výraz v ProjectWise CEL

SQL funkciaPôvodná konfigurácia ProjectWise
CHARINDEX('C', 'ABC')
CELProjectWise CEL
'ABC'.indexOf('C') + 1

Čo je odlišné

SQL CHARINDEX vracia v tomto mapovaní pozíciu počítanú od 1. CEL indexOf() pracuje s indexom od 0, preto dokumentovaný ekvivalent pripočíta 1.

  1. SQL výsledok pre C je 3, samotné CEL indexOf() vráti 2.
  2. Pripočítanie 1 je potrebné iba vtedy, keď ďalšia logika očakáva SQL číslovanie.
  3. indexOf() je rozšírenie ProjectWise CEL, nie prenositeľná záruka každého hostiteľa CEL.

Cieľ migrácie

Zachovajte číselný výsledok existujúcej logiky založenej na CHARINDEX.

Čo sa mení

ProjectWise CEL indexOf() počíta od nuly. Oficiálny migračný príklad preto pripočíta 1, aby zachoval výsledok SQL výrazu.

Prečo je CEL riešenie presnejšie

Posun je viditeľný priamo vo výraze. Ak nová logika používa pozíciu iba ako index CEL, pripočítanie nemusí byť potrebné; rozhoduje spotrebiteľ výsledku.

Pred nasadením

Otestujte znak na začiatku, uprostred, na konci a chýbajúci znak. Neprenášajte automaticky SQL index do ďalšej CEL funkcie.

Zdroje

  • BENTLEY-PW-CEL-SQL-FUNCTIONS — mapovanie CHARINDEX.
  • BENTLEY-PW-CEL-STRINGS — referencia metódy indexOf().