Počítače Okna Internet

Hodnoty jsou null (je null a je null()). Hodnoty null ​​ (jsou null a jsou null()) V požadavku jsou null 1s

NULA– chybějící hodnoty.
Nezaměňovat s null! NULL není číslo, nerovná se mezera, nulový odkaz, nedefinováno.

NULL je typotvorná hodnota, tzn. existuje typ NULL a jedna hodnota tohoto typu.

Hodnoty NULL se v dotazu objevují v následujících situacích:
a) Vnější spojení, ve kterém nebyl nalezen žádný odpovídající záznam v jiné tabulce (pokud vlevo - ve druhé, pokud vpravo - v první, pokud je plný - v obou)
b) Přístup k atributům prvků pro skupinu a naopak.
c) NULL v seznamu polí výběru (SELECT)
d) Přístup k podrobnostem nefunkčního odkazu

JE NULL použitý v příkazu SELECT (jako kdyby se kontrolovalo, že je hodnota prázdná (Value IS NULL)):
Kód 1C v 8.x
VÝBĚR
KDYŽ je hodnota NULL TAK VýsledekIFNULL
ELSE Význam
KONEC

další příklad:
Kód 1C v 8.x SELECT

VÝBĚR, KDYŽ účetní Nomenklatura Zbývá. Množství Zbytek JE NULL PAK 0
ELSE AccountingNomenclatureRemains.QuantityRemaining AS QuantityRemaining
Z



KDE

Funkce ISNULL (hodnota, VýsledekIFNULL) vrátí hodnotu svého prvního parametru, pokud není null, a hodnotu svého druhého parametru jinak
Je sbaleno SELECT…END, ale preferováno je ISNULL.
Kód 1C v 8.x
VYBRAT
ISNULL(Katalog.Nomenklatura.Článek, "---") JAKO článek,
Adresář.Číselník.Reprezentace Číselník AS

další příklad:
Kód 1C v 8.x
VYBRAT
Adresář nomenklatury. Jméno,
ISNULL(AccountingNomenclatureRemainders.QuantityRemaining, 0) AS QuantityRemaining
Z
Adresář Nomenclature AS Adresář nomenklatury
PŘIPOJIT SE VLEVO
Software AccountingNomenclatureRemains.Nomenclature = DirectoryNomenclature.Link
KDE
ReferenceNomenclature.ThisGroup = FALSE
PROTI tento příklad jsou získány všechny prvky nomenklaturní referenční knihy, poté jsou pro každou nomenklaturu získány aktuální zůstatky z akumulačního registru. Protože u položky, u které nejsou žádné zůstatky, virtuální tabulka zůstatků nevrátí záznam, pak v důsledku propojení v poli "Vyúčtování položek zbývá. Množství zbytků" budou hodnoty NULL pro položka, u které nebyly žádné zůstatky. Aby ve výsledku dotazu byla místo NULL hodnota 0, použili jsme funkci ISNULL (), která provede požadovanou náhradu.

JE NULL se liší od SELECT z následujících důvodů:
a) Když JE NULL, dotaz je lépe čitelný (jednodušší)
b) Když ISNULL, pokud je kontrolován komplexní výraz, funguje rychleji, protože je vyhodnocen jednou
c) Když IS NULL, nahrazující výraz se převede na typ kontrolovaného výrazu, pokud má typ String (délka) nebo Číslo (délka).

Hodnoty pro NULL nemůžete zkontrolovat běžnou rovností, protože SQL má logiku se třemi hodnotami - True, False, NULL a výsledek takového srovnání bude NEZNÁMÝ, což je podobné FALSE v 1C 8.0.
NULA<>0, takže pro levé vnější spoje, sp. Nomenklatura s tabulkami zůstatků, cen, protistrany se vzájemným zúčtováním, pokud takové záznamy neexistují, bude NULL, což se nerovná 0. Nejlepší řešení– JE NULL

Při práci s dotazovacím jazykem někdy nastane situace, kdy je potřeba nahradit hodnotu NULL nějakou jinou hodnotou. Potřeba takové operace může vzniknout například při příjmu zůstatků na sklad pro celý sortiment. Tento článek popisuje způsob použití funkce dotazovacího jazyka ISNULL() k řešení takových problémů a také popisuje další řešení.

Funkce ISNULL

Dotazovací jazyk implementuje funkci ISNULL(), jejímž účelem je nahradit výraz jiným výrazem, pokud výraz měl hodnotu NULL. Syntaktický diagram této funkce vypadá takto:

ISNULL(<Проверяемое выражение>, <Выражение замены>)

Tato funkce vrátí hodnotu prvního parametru, pokud není NULL, a v opačném případě hodnotu druhého výrazu.


VYBRAT
ISNULL(AccountingNomenclatureRemainders.QuantityRemaining, 0) AS QuantityRemaining
Z

KDE

V tomto příkladu jsou získány všechny prvky adresáře položek, poté jsou pro každou položku získány aktuální zůstatky z registru akumulace. Protože u položky, u které nejsou žádné zůstatky, virtuální tabulka zůstatků nevrátí záznam, pak v důsledku propojení v poli "Vyúčtování položek zbývá. Množství zbytků" budou hodnoty NULL pro položka, u které nebyly žádné zůstatky. Aby ve výsledku dotazu byla místo NULL hodnota 0, použili jsme funkci ISNULL (), která provede požadovanou náhradu.

Pomocí operace SELECT

K vyřešení problému popsaného výše můžete použít operaci SELECT dotazovacího jazyka. Příklad, jak by dotaz podobný předchozímu vypadal takto:


VYBRAT
Adresář nomenklatury. Jméno,
VÝBĚR, KDYŽ účetní Nomenklatura Zbývá. Množství Zbytek JE NULL PAK 0
ELSE AccountingNomenclatureRemains.QuantityRemaining AS QuantityRemaining
Z
Adresář Nomenclature AS Adresář nomenklatury
PŘIPOJIT SE VLEVO
Software AccountingNomenclatureRemains.Nomenclature = DirectoryNomenclature.Link
KDE
ReferenceNomenclature.ThisGroup = FALSE

Výsledek tohoto dotazu bude shodný s výsledkem dotazu uvedeného v předchozí části.

Použití funkce ISNULL() je vhodnější než použití operace SELECT z následujících důvodů: zápis pomocí ISNULL() je poněkud kompaktnější, což zlepšuje čitelnost dotazu. Navíc v případě, kdy je kontrolovaný výraz komplexní funkcí, včetně agregační funkce, lze výpočet funkce ISNULL () provést rychleji než analog zapsaný pomocí funkce SELECT.

Vlastnosti funkce ISNULL

Funkce ISNULL() je sice obdobou operace SELECT s kontrolou hodnoty pro NULL, nicméně má rozdíl. Rozdíl je v tom, že pokud má výraz funkce řetězec nebo číselný typ, bude nahrazující výraz převeden na typ kontrolovaného výrazu.

Pokud je tedy například testovaný výraz typu String(5) a nahrazující výraz je typu String(10), typ výsledku bude převeden na typ String(5). Výsledkem je, že když funkce vrátí náhradní výraz, hodnota bude zkrácena na pět znaků.

U číselných výrazů je situace podobná: hodnota nahrazovaného výrazu se převede na typ zaškrtnutého výrazu, tzn. nahrazující výraz může být zkrácen. Pokud hodnotu nelze převést, dotazovací jazyk ukončí dotaz s chybou. Například pokus o převod čísla 1000 na typ Number(2) se nezdaří.

Ahoj.
V pokračování primitivních datových typů, jak byly nedávno zvažovány a dnes o nich budeme mluvit typ NULL.

Typ NULL je literál, který může obsahovat pouze jednu hodnotu - hodnotu "NULL".
NULL — Nerovná se nulovému odkazu, mezerě nebo nedefinovanému typu.

Používá se při práci s databází (při spojování tabulek), slouží k určení chybějící hodnoty při práci s databází.
Hodnotu NULL lze získat přiřazením této hodnoty proměnné:
Proměnná = NULL.

Hodnoty typu NULL se tvoří jako výsledek spojení, když prvek z jedné tabulky podle podmínky nemá odpovídající prvek z jiné tabulky. Hodnota NULL má specifické vlastnosti:
- porovnání hodnoty NULL s jakýmkoli jiným argumentem vždy vrátí hodnotu false;

K určení hodnoty NULL se používá konstrukce JE NULL.
Chcete-li převést typ NULL, použijte funkci ISNULL (je NULL).

Aby bylo možné v důsledku dotazu oříznout pole obsahující hodnoty NULL, používají se následující konstrukce: - není NULL - není NULL

Příklady

Příklad kontroly hodnoty pro NULL

VYBERTE Adresář. Nomenklatura. Jméno, Adresář. Nomenklatura. Kupní cena KDE Reference. Nomenklatura. Nákupní cena Ano NULL

Příklad funkce ISNULL().
Návratová hodnota funkce ISNULL () : hodnota prvního parametru, pokud první parametr neobsahuje hodnotu null, jinak hodnota druhého parametru. Druhý parametr bude převeden na typ prvního parametru, pokud je typem prvního parametru řetězec nebo číslo.

// Získání částky podle pole množství. V případě, že nejsou žádné položky, získejte 0 SELECT ISNULL(SUM(množství), 0 ) JAKO Množství Z dokumentu. Výdaje Sloučenina

S pozdravem 1C programátor.
Zanechte svůj komentář, zajímá mě váš názor.

NULA- chybějící hodnoty.
Nezaměňovat s null! NULL není číslo, nerovná se mezera, nulový odkaz, nedefinováno.

NULL je typotvorná hodnota, tzn. existuje typ NULL a jedna hodnota tohoto typu.

Hodnoty NULL se v dotazu objevují v následujících situacích:
a) Vnější spojení, ve kterém nebyl nalezen žádný odpovídající záznam v jiné tabulce (pokud vlevo - ve druhé, pokud vpravo - v první, pokud je plný - v obou)
b) Přístup k atributům prvků pro skupinu a naopak.
c) NULL v seznamu polí výběru (SELECT)
d) Přístup k podrobnostem nefunkčního odkazu

JE NULL použitý v příkazu SELECT (jako kdyby se kontrolovalo, že je hodnota prázdná (Value IS NULL)):
Kód 1C v 8.x
VÝBĚR
KDYŽ je hodnota NULL TAK VýsledekIFNULL
ELSE Význam
KONEC

další příklad:
Kód 1C v 8.x SELECT
VÝBĚR, KDYŽ účetní Nomenklatura Zbývá. Množství Zbytek JE NULL PAK 0
ELSE AccountingNomenclatureRemains.QuantityRemaining AS QuantityRemaining
Z

KDE

Funkce ISNULL (hodnota, VýsledekIFNULL) vrátí hodnotu svého prvního parametru, pokud není null, a hodnotu svého druhého parametru jinak
Je sbaleno SELECT…END, ale preferováno je ISNULL.
Kód 1C v 8.x
VYBRAT
ISNULL(Katalog.Nomenklatura.Článek, "---") JAKO článek,
Adresář.Číselník.Reprezentace Číselník AS

další příklad:
Kód 1C v 8.x
VYBRAT
Adresář nomenklatury. Jméno,
ISNULL(AccountingNomenclatureRemainders.QuantityRemaining, 0) AS QuantityRemaining
Z
Adresář Nomenclature AS Adresář nomenklatury
PŘIPOJIT SE VLEVO
Software AccountingNomenclatureRemains.Nomenclature = DirectoryNomenclature.Link
KDE
ReferenceNomenclature.ThisGroup = FALSE
V tomto příkladu jsou získány všechny prvky adresáře položek, poté jsou pro každou položku získány aktuální zůstatky z registru akumulace. Protože u položky, u které nejsou žádné zůstatky, virtuální tabulka zůstatků nevrátí záznam, pak v důsledku propojení v poli "Vyúčtování položek zbývá. Množství zbytků" budou hodnoty NULL pro položka, u které nebyly žádné zůstatky. Aby ve výsledku dotazu byla místo NULL hodnota 0, použili jsme funkci ISNULL (), která provede požadovanou náhradu.

JE NULL se liší od SELECT z následujících důvodů:
a) Když JE NULL, dotaz je lépe čitelný (jednodušší)
b) Když ISNULL, pokud je kontrolován komplexní výraz, funguje rychleji, protože je vyhodnocen jednou
c) Když IS NULL, nahrazující výraz se převede na typ kontrolovaného výrazu, pokud má typ String (délka) nebo Číslo (délka).

Hodnoty pro NULL nemůžete zkontrolovat běžnou rovností, protože SQL má logiku se třemi hodnotami - True, False, NULL a výsledek takového srovnání bude NEZNÁMÝ, což je podobné FALSE v 1C 8.0.
NULA<>0, takže pro levé vnější spoje, sp. Nomenklatura s tabulkami zůstatků, cen, Protistrany se vzájemným zúčtováním, pokud takové záznamy neexistují, bude NULL, což se nerovná 0. Nejlepší řešení je NULL

27.06.2017

NULL, ISNULL() a IS NULL v dotazech 1C

Co je NULL

NULA jako výsledek požadavku znamená absenci hodnoty (není to prázdná hodnota, není null, není to nulová reference).
Například v důsledku spojení tabulek dotazů nebyla při propojování pomocí spojovacích polí nalezena žádná hodnota v jedné z tabulek. Nebo požadavek odkazuje na neexistující atribut (vlastnost).

NULL se nerovná NULL!

Pokud chcete uložit výběr (podmínku) s kontrolou NULL v dotazu 1C, pak se vždy vrátí konstrukce jako "WHERE VT.Field1 = NULL" LEŽÍCÍ! Pro kontrolu byste měli použít speciální operátor

V požadavku 1C JE NULL

Chcete-li otestovat hodnotu (nebo pracovat s hodnotami) pro NULL, musíte použít následující konstrukci "WHERE VT.Field1 IS NULL" Nebo jiný příklad, použijte v konstrukci VÝBĚR"CHOICE | WHEN VT.Field1 IS NULL | THEN" Stojí za zmínku, že funkce kontroly pole na NULL je jednou z nejnáročnějších na zdroje v dotazech 1C. Pokud jej tedy chcete použít v dotazovací podmínce, zvažte, zda je možné takovou kontrolu nahradit vnitřní spojení(typ spojení v dotazech, ve kterém zůstávají ve výběru pouze záznamy, které jsou přítomny v obou tabulkách).

Funkce ISNULL() v dotazu 1C

Funkce ISNULL() umožňuje nahradit chybějící hodnotu v poli požadavku zadanou hodnotou (standardní hodnota, stub).
Pokud například neexistují žádné informace o ceně zboží, uvedeme je rovnou 0 (nule) "SELECT | HAVE NULL(T.Price, 0) AS Price | FROM Remaining Goods AS VT"

Závěr

Pište dotazy správně a optimálně. Protože špatný požadavek je brzda a hovno kód)