SELECT z pluginu vrací pouze 255 znaků řetězce

PříspěvekNapsal: 14.05.2007 08:17
od jan.sindelar
Pokud potřebujeme načíst z pluginu přes Helios.OpenSQL textový řetězec, narazíme na omezení - SELECT vrátí jen 255 znaků, i když je řetězec ve skutečnosti delší. Toto omezení je dáno použitím knihovny NTwDbLib.dll, kterou Helios využívá pro připojení k SQL serveru, a nelze tuto hodnotu nějak "přenastavit". Pokud přesto chceme načíst řetězec delší než 255 znaků, musíme použít poněkud komplikovanější SELECT s využitím funkce SUBSTRING:

Kód: Vybrat vše
SELECT SUBSTRING(Sloupec,1,255), SUBSTRING(Sloupec,256,255), SUBSTRING(Sloupec,511,255), ..., LEN(Sloupec)


Tímto způsobem načteme jednotlivé 255ti znakové části a můžeme vyskládat výsledný delší řetězec. Funkce LEN nám pak vrátí původní délku sloupce, protože knihovna NTwDbLib.dll navíc ořezává mezery zprava.

UPDATE 3.7.2009: (Radek Naumec, Harpagon Software s.r.o.) Funkci LEN je možno použít pouze pro typ VARCHAR. U atributů typu TEXT je nutno použít obdobnou funkci DATALENGTH.