heim - Smart-TV
1c wo gleich Wert oder Null. Verwendung der Funktion isnull()

27.06.2017

NULL, ISNULL() und IS NULL in 1C-Abfragen

Was ist NULL?

NULL im Abfrageergebnis bedeutet, dass kein Wert vorhanden ist (es ist kein leerer Wert, kein Nullwert, kein Nullverweis).
Als Ergebnis der Verbindung von Abfragetabellen wurde beispielsweise beim Herstellen einer Verbindung mithilfe von Verbindungsfeldern in einer der Tabellen kein Wert gefunden. Oder die Anfrage bezieht sich auf ein nicht vorhandenes Attribut (Eigenschaft).

NULL ist nicht dasselbe wie NULL!

Wenn Sie in einer 1C-Anfrage eine Auswahl (Bedingung) mit einer Prüfung auf NULL erzwingen möchten, wird immer eine Konstruktion wie „WHERE VT.Field1 = NULL“ zurückgegeben LÜGE! Zur Überprüfung sollten Sie einen speziellen Operator verwenden

Die 1C-Anfrage enthält NULL

Um einen Wert auf NULL zu prüfen (oder mit Werten zu arbeiten), müssen Sie die folgende Konstruktion „WHERE VT.Field1 IS NULL“ oder ein anderes Beispiel in einer Konstruktion verwenden AUSWAHL„SELECTION | WHEN VT.Field1 IS NULL | THEN“ Es ist erwähnenswert, dass die Funktion, ein Feld auf NULL zu prüfen, eine der ressourcenintensivsten in 1C-Abfragen ist. Wenn Sie es daher in einer Anforderungsbedingung verwenden möchten, überlegen Sie, ob eine solche Prüfung ersetzt werden kann innerer Join(eine Art von Join-In-Abfragen, bei der nur in beiden Tabellen vorhandene Datensätze in der Auswahl verbleiben).

Funktion ISNULL() in 1C-Anfrage

Funktion IST NULL() ermöglicht es Ihnen, einen fehlenden Wert in einem Anforderungsfeld durch einen angegebenen Wert (Standardwert, Stub) zu ersetzen.
Wenn beispielsweise keine Informationen über die Kosten eines Produkts vorliegen, geben wir ihn mit 0 (Null) an: „SELECT | ISNULL(T.Price, 0) AS Price | FROM Remaining Goods AS T“

Abschluss

Anfragen richtig und optimal verfassen. Weil eine schlechte Anfrage langsamer und beschissener Code ist)

Guten Tag.
Wir fahren mit den primitiven Datentypen fort, wir haben sie uns kürzlich angesehen, und heute werden wir darüber sprechen Geben Sie NULL ein.

Der NULL-Typ ist ein Literal, das nur einen Wert enthalten kann, den Wert „NULL“.
NULL – Nicht gleich einem Nullverweis, einem Leerzeichen oder einem undefinierten Typ.

Wird bei der Arbeit mit einer Datenbank (beim Zusammenführen von Tabellen) verwendet und dient zur Bestimmung eines fehlenden Werts bei der Arbeit mit einer Datenbank.
Ein NULL-Wert kann erhalten werden, indem dieser Wert einer Variablen zugewiesen wird:
Variable =NULL.

Werte vom Typ NULL werden als Ergebnis von Joins gebildet, wenn ein Element aus einer Tabelle kein entsprechendes Element aus einer anderen hat. Ein Wert vom Typ NULL weist bestimmte Merkmale auf:
- Der Vergleich eines NULL-Werts mit einem anderen Argument gibt immer „false“ zurück;

Um den Wert NULL zu ermitteln, verwenden Sie das Konstrukt IS NULL (ist NULL).
Um den NULL-Typ zu konvertieren, verwenden Sie die Funktion ISNULL (isNULL).

Um als Ergebnis einer Anfrage Felder abzuschneiden, die NULL-Werte enthalten, werden folgende Konstruktionen verwendet: – ist nicht NULL – nicht ist NULL

Beispiele

Beispiel für die Überprüfung eines Werts auf NULL

Verzeichnis auswählen. Nomenklatur. Name, Verzeichnis. Nomenklatur. PurchasingPrice WHERE-Verzeichnis. Nomenklatur. PurchasePrice ist NULL

Beispiel für die Funktion ISNULL()
Rückgabewert der Funktion ISNULL(): der Wert des ersten Parameters, wenn der erste Parameter keinen NULL-Wert enthält, andernfalls der Wert des zweiten Parameters. Der zweite Parameter wird in den Typ des ersten Parameters konvertiert, falls der Typ des ersten Parameters eine Zeichenfolge oder eine Zahl ist.

// Den Betrag anhand des Mengenfelds ermitteln. Wenn keine Datensätze vorhanden sind, erhalten Sie 0 SELECT ISNULL(SUM(Quantity), 0 ) AS Quantity FROM Document. Kosten Inc. Verbindung

Mit freundlichen Grüßen, 1C-Programmierer.
Hinterlassen Sie Ihre Kommentare, Ihre Meinung interessiert mich.

Die 1C-Abfragesprache ist einer der Hauptunterschiede zwischen den Versionen 7.7 und 8. Einer der wichtigsten Punkte beim Erlernen der 1C-Programmierung ist die Abfragesprache. In 1C 8.3 sind Abfragen das leistungsstärkste und effektivste Werkzeug zum Abrufen von Daten. Mit der Abfragesprache können Sie auf komfortable Weise Informationen aus der Datenbank abrufen.

Die Syntax selbst ähnelt stark dem klassischen T-SQL, mit der Ausnahme, dass Sie in 1C mit der Abfragesprache Daten nur über das Select-Konstrukt empfangen können. Die Sprache unterstützt beispielsweise auch komplexere Konstrukte (Anfrage innerhalb einer Anfrage). Abfragen in 1C 8 können sowohl in Kyrillisch als auch in Latein verfasst werden.

In diesem Artikel werde ich versuchen, über die wichtigsten Schlüsselwörter in der 1C-Abfragesprache zu sprechen:

  • wählen
  • erlaubt
  • verschieden
  • äußern
  • Erste
  • für den Wandel
  • Bedeutung
  • Werttyp (und REFERENCE-Operator)
  • Auswahl
  • gruppiere nach
  • haben
  • IST NULL
  • Ja NULL
  • Anschlüsse - rechts, links, intern, voll.

Sowie einige kleine Tricks der 1C-Sprache, mit denen Sie den Anfragetext optimal aufbauen können.

Zum Debuggen von Abfragen im 1C 8.2-System steht ein spezielles Tool zur Verfügung – die Abfragekonsole. Sie können die Beschreibung sehen und über den Link herunterladen.

Schauen wir uns die wichtigsten und interessantesten Operatoren der 1C-Abfragesprache an.

WÄHLEN

In der Abfragesprache 1C Enterprise 8 beginnt jede Abfrage mit einem Schlüsselwort WÄHLEN. In der 1C-Sprache gibt es keine UPDATE-, DELETE-, CREATE TABLE- und INSERT-Konstrukte; diese Manipulationen werden in der Objekttechnologie durchgeführt. Sein Zweck besteht nur darin, Daten zu lesen.

Zum Beispiel:

WÄHLEN
Aktueller Verzeichnisname
AUS
Verzeichnis.Nomenklatur AS Aktuelles Verzeichnis

Die Abfrage gibt eine Tabelle mit Elementnamen zurück.

In der Nähe der Struktur WÄHLEN Sie können Schlüsselwörter finden FÜR DEN WANDEL, ERLAUBT, VERSCHIEDEN, ERSTE

ERLAUBT– wählt nur Datensätze aus der Tabelle aus, für die der aktuelle Benutzer Rechte hat.

VERSCHIEDEN– bedeutet, dass das Ergebnis keine doppelten Zeilen enthält.

AUSWAHL (FALL)

Sehr oft wird dieses Design von Programmierern unterschätzt. Ein Anwendungsbeispiel:

Aktuelles Verzeichnis.Name,

WANN Aktuelles Verzeichnis.Dienst DANN

"Service"

ENDE ANZEIGENomenklatur

Verzeichnis.Nomenklatur AS Aktuelles Verzeichnis

Das Beispiel gibt einen Textwert im Feld „Artikeltyp“ zurück – „Produkt“ oder „Dienstleistung“.

WO

Das Design der 1C-Abfragesprache, das es Ihnen ermöglicht, den empfangenen Daten eine Auswahl aufzuerlegen. Bitte beachten Sie, dass das System alle Daten vom Server erhält und erst dann anhand dieses Parameters ausgewählt wird.

WÄHLEN
Verzeichnisname
AUS
Aktuelles Verzeichnis.Nomenklatur AS Aktuelles Verzeichnis
WHERE CurrentDirectory.Service = TRUE

Im Beispiel wählen wir Datensätze aus, bei denen der Wert des Attributs „Service“ auf „True“ gesetzt ist. In diesem Beispiel könnten wir mit der folgenden Bedingung auskommen:

„WO IST DER SERVICE“

Im Wesentlichen wählen wir Zeilen aus, in denen der Ausdruck nach dem Schlüsselwort „True“ ist.

Sie können direkte Bedingungen in Ausdrücken verwenden:

WHERE-Code = „005215“

Mit dem Operator „VALUE()“ in den Bedingungen nutzen Sie den Zugriff auf vordefinierte Elemente und Aufzählungen in einer 1C-Anfrage:

WHERE Item Type = Value(Enumeration.Item Types.Product)

Zeitwerte können wie folgt angegeben werden:

WO Empfangsdatum > DATETIME(2012,01,01):

Am häufigsten werden Bedingungen als Parameter angegeben, die an die Anfrage übergeben werden:

Holen Sie sich 267 Video-Lektionen zu 1C kostenlos:

WHERE NomenclatureGroup= &NomenclatureGroup

Dem Attributtyp kann eine Bedingung auferlegt werden, wenn es sich um einen zusammengesetzten Typ handelt:

Wenn Sie die Auswahl aus einer Werteliste oder einem Array einschränken müssen, können Sie Folgendes tun:

WO ist das Sammelregister B (&Liste der Dokumente zur Auswahl)

Die Bedingung kann auch komplex sein und aus mehreren Bedingungen bestehen:

WHERE Receipt Date > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup AND NOT Service

GRUPPIERE NACH

Design der 1C 8.2-Abfragesprache, die zum Gruppieren des Ergebnisses verwendet wird.

Zum Beispiel:

WÄHLEN
Wareneingang und Dienstleistungen.
SUM(Receipt of GoodsServicesGoods.Quantity) AS Menge,
SUM(Receipt of GoodsServicesGoods.Amount) AS Betrag
AUS
Dokument. Wareneingang und Dienstleistungen. WIE Wareneingang und Dienstleistungen

GRUPPIERE NACH
WareneingangServicesGoods.Goods

Diese Anfrage fasst alle Belege nach Betrag und Menge nach Artikel zusammen.

Außer dem Schlüsselwort SUMME Sie können andere Aggregatfunktionen verwenden: MENGE, ANZAHL DER VERSCHIEDENEN, MAXIMAL, MINIMUM, DURCHSCHNITT.

HABEN

Ein Design, das oft vergessen wird, aber sehr wichtig und nützlich ist. Sie können die Auswahl in Form einer Aggregatfunktion festlegen. Dies ist im Design nicht möglich WO.

Beispiel für die Verwendung von HAVING in einer 1C-Anfrage:

WÄHLEN
Wareneingang und Dienstleistungen.
SUM(Receipt of GoodsServicesGoods.Quantity) AS Menge,
SUM(Receipt of GoodsServicesGoods.Amount) AS Betrag
AUS
Dokument. Waren- und Dienstleistungseingang

GRUPPIERE NACH
Empfang von Waren und Dienstleistungen

SUM(Receipt of GoodsServicesGoods.Quantity) > 5

Daher wählen wir die Anzahl der Produkte aus, bei denen mehr als 5 Stück eingetroffen sind.

BEDEUTUNG()

Zum Beispiel:

WHERE Bank = Value(Directory.Banks.EmptyLink)

WHERE Nomenklaturtyp = Wert(Verzeichnis.Nomenklaturtypen.Produkt)

WHERE Item Type = Value(Enumeration.Item Types.Service)

TYP auf Anfrage

Der Datentyp kann mithilfe der Funktionen TYPE() und VALUETYPE() oder mithilfe des logischen REFERENCE-Operators überprüft werden.

ÄUSSERN()

Der Express-Operator in 1C-Abfragen wird zum Konvertieren von Datentypen verwendet.

Syntax: ÄUSSERN(<Выражение>WIE<Тип значения>)

Damit können Sie Zeichenfolgenwerte in Datumswerte oder Referenzwerte in Zeichenfolgendaten usw. umwandeln.

In praktischen Anwendungen wird der Express()-Operator sehr häufig zum Konvertieren von Feldern unbegrenzter Länge verwendet, da Felder unbegrenzter Länge nicht ausgewählt, gruppiert usw. werden können. Wenn solche Felder nicht konvertiert werden, erhalten Sie eine Fehlermeldung Sie können Felder unbegrenzter Länge und Felder inkompatibler Typen nicht vergleichen.

WÄHLEN
ContactInformation.Object,
EXPRESS(ContactInfo.View AS ROW(150)) AS-Ansicht
AUS
Informationsregister. WIE Kontaktinformationen

GRUPPIERE NACH
EXPRESS(ContactInfo.Representation AS ROW(150)),
ContactInformation.Object

ISNULL (ISNULL)

Eine recht nützliche Funktion der 1C-Abfragesprache, die den Wert im Datensatz prüft und prüft, ob er gleich ist NULL, Dadurch können Sie ihn durch Ihren eigenen Wert ersetzen. Wird am häufigsten verwendet, um virtuelle Salden- und Umsatztabellen zu erhalten, um sie zu verbergen NULL und eine klare 0 (Null) setzen.

ISNULL(Pre-Month Taxes.AppliedFSS Benefit, 0)

Eine solche Funktion der 1C-Abfragesprache ISNULL gibt Null zurück, wenn kein Wert vorhanden ist, wodurch ein Fehler vermieden wird.

VERBINDEN

Es gibt 4 Arten von Verbindungen: LINKS, RECHTS, VOLLSTÄNDIG, INTERN.

LINKER und RECHTER ANSCHLUSS

Joins werden verwendet, um zwei Tabellen basierend auf einer bestimmten Bedingung zu verknüpfen. Funktion wann LINKS BEITRETEN besteht darin, dass wir die erste angegebene Tabelle vollständig nehmen und die zweite Tabelle bedingt binden. Die Felder der zweiten Tabelle, die nicht durch die Bedingung gebunden werden konnten, werden mit dem Wert gefüllt NULL.

Ein Beispiel für einen Left Join in einer 1C-Anfrage:

Es wird die gesamte Tabelle zurückgegeben und das Feld „Bank“ nur an den Stellen ausgefüllt, an denen die Bedingung „Counterparties.Name = Banks.Name“ erfüllt ist. Wenn die Bedingung nicht erfüllt ist, wird das Feld Bank auf gesetzt NULL.

RIGHT JOIN in der Sprache 1C 8.3 absolut ähnlich Linker Anschluss, mit Ausnahme eines Unterschieds: in ANSCHLUSSRECHT Die „Haupttabelle“ ist die zweite, nicht die erste.

VOLLSTÄNDIGE VERBINDUNG

VOLLSTÄNDIGE VERBINDUNG Der Unterschied zu links und rechts besteht darin, dass alle Datensätze aus zwei Tabellen angezeigt werden und nur diejenigen verbunden werden, die per Bedingung verbunden werden können.

Zum Beispiel:

VOLLSTÄNDIGE VERBINDUNG
Verzeichnis.Banken WIE Banken

VON

Die Abfragesprache gibt beide Tabellen nur dann vollständig zurück, wenn die Bedingung „Datensätze verbinden“ erfüllt ist. Im Gegensatz zu einem Links-/Rechts-Join ist es möglich, dass NULL in zwei Feldern erscheint.

INNER JOIN

INNER JOIN Der Unterschied zu „full“ besteht darin, dass nur die Datensätze angezeigt werden, die gemäß einer bestimmten Bedingung verbunden werden könnten.

Zum Beispiel:

AUS
Verzeichnis. Gegenparteien AS-Kunden

INNER JOIN
Verzeichnis.Banken WIE Banken

VON
Clients.Name = Banks.Name

Diese Abfrage gibt nur Zeilen zurück, in denen die Bank und die Gegenpartei denselben Namen haben.

Abschluss

Dies ist nur ein kleiner Teil der Syntax aus der 1C 8-Abfragesprache; in Zukunft werde ich versuchen, einige Punkte detaillierter zu betrachten, zu zeigen und vieles mehr!

NULL- fehlende Werte.
Nicht zu verwechseln mit dem Nullwert! NULL ist keine Zahl, entspricht nicht einem Leerzeichen, einer leeren Referenz oder Undefiniert.

NULL ist ein typbildender Wert, d.h. Es gibt einen Typ NULL und einen einzelnen Wert dieses Typs.

NULL-Werte erscheinen in der Abfrage in den folgenden Situationen:
a) Ein externer Join, bei dem kein entsprechender Datensatz in einer anderen Tabelle gefunden wurde (bei einem linken – in der zweiten Tabelle, bei einem rechten – in der ersten, bei einem vollständigen – in beiden)
b) Zugriff auf die Details von Elementen einer Gruppe und umgekehrt.
c) NULL in der Liste der Auswahlfelder (SELECT)
d) Zugriff auf die Details zu einem defekten Link

IST NULL Wird im SELECT-Operator verwendet (als würde überprüft, ob der Wert leer ist (Wert ist NULL)):
Code 1C v 8.x
AUSWAHL
WENN der Wert NULL IST, DANN ResultIfNULL
ELSE Bedeutung
ENDE

ein anderes Beispiel:
Code 1C v 8.x SELECT

AUSWAHL, WENN Accounting ItemsRemaining.QuantityRemaining NULL IST, DANN 0
SONST Berücksichtigung der verbleibenden Nomenklaturmenge als verbleibende Menge
AUS



WO

Funktion ISNULL(Wert, ResultIfNULL) gibt den Wert seines ersten Parameters zurück, wenn dieser nicht NULL ist, andernfalls den Wert des zweiten Parameters
Ist reduziert SELECT...END, aber ISNULL wird bevorzugt.
Code 1C v 8.x
WÄHLEN
ISNULL(Directory.Nomenclature.Article, "---") AS Artikel,
Verzeichnis.Nomenklatur.Präsentation AS-Nomenklatur

ein anderes Beispiel:
Code 1C v 8.x
WÄHLEN
Verzeichnis der Nomenklaturnamen,
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS QuantityRemaining
AUS
Verzeichnis.Nomenklatur AS VerzeichnisNomenklaturen
LINKE VERBINDUNG Registrieren Sie die Salden der Postenbuchhaltung
Software Item AccountingRemains.Nomenclature = Nomenclature Directory.Link
WO
Nomenklatur Directory.ThisGroup = FALSE
In diesem Beispiel werden alle Elemente des Artikelverzeichnisses abgerufen, anschließend werden für jeden Artikel die aktuellen Salden aus dem Akkumulationsregister abgerufen. Weil für einen Artikel, für den keine Salden vorhanden sind, gibt die virtuelle Saldentabelle keinen Datensatz zurück, dann gibt es aufgrund der Verbindung im Feld „Item AccountingRemaining.QuantityRemaining“ NULL-Werte für den Artikel, für den dort Es gab keine Salden. Um sicherzustellen, dass das Ergebnis der Anfrage statt des NULL-Wertes den Wert 0 enthält, haben wir die Funktion ISNULL() verwendet, die die gewünschte Ersetzung durchführt.

IST NULL unterscheidet sich aus folgenden Gründen von CHOICE:
a) Wenn ISNULL, ist die Abfrage besser lesbar (einfacher)
b) Wenn ISNULL, wenn ein komplexer Ausdruck überprüft wird, arbeitet er schneller, da er einmal berechnet wird
c) Wenn ISNULL, wird der Ersatzausdruck in den Typ des getesteten Ausdrucks konvertiert, wenn er vom Typ String (Länge) oder Number (Bittiefe) ist.

Sie können Werte auf NULL nicht mit der üblichen Gleichheit überprüfen, da SQL eine dreiwertige Logik verwendet – True, False, NULL, und das Ergebnis eines solchen Vergleichs UNKNOWN sein wird, was in 1C 8.0 FALSE ähnelt.
NULL<>0, also für linke äußere Verknüpfungen siehe. Nomenklatur mit Salden-, Preis- und Kontrahententabellen mit gegenseitiger Abrechnung. Wenn solche Datensätze nicht vorhanden sind, wird NULL angezeigt, was ungleich 0 ist. Die beste Lösung ist ISNULL

Aufmerksamkeit! Dies ist eine Einführungsversion der Lektion, deren Materialien möglicherweise unvollständig sind.

Melden Sie sich als Student auf der Website an

Melden Sie sich als Schüler an, um auf Schulmaterialien zuzugreifen

Abfragesprache 1C 8.3 für Programmieranfänger: Funktionen und Operatoren für die Arbeit mit Typen (VALUE TYPE, TYPE, REFERENCE, ISNULL, EXPRESS)

Denken Sie daran, dass jedes Attribut (Eigenschaft, Feld) eines Verzeichnisses, Dokuments oder eines anderen Anwendungsobjekts seinen eigenen Typ hat. Und diesen Typ können wir uns im Konfigurator ansehen:

In der Abfragesprache gibt es eine ganze Klasse von Funktionen und Operatoren für die Arbeit mit Detailtypen. Schauen wir sie uns an.

Funktion WERTTYP

Diese Funktion nimmt einen Parameter (Wert) und gibt seinen Typ zurück. Für die im Bild (oben) beschriebenen Requisiten Schmecken Verzeichnis Essen Folgendes wird zurückgegeben:

Schauen wir uns nun die Requisiten an Besonderes Merkmal im Verzeichnis Städte:

Sie sehen, dass es sich bei dieser Requisite um einen von mehreren Typen handeln kann: Linie, Verzeichnis.Geschmäcker, Verzeichnis.Farben. Diese Art von Details wird COMPOSITE genannt.

Wenn wir versuchen, den Wert eines solchen Details im 1C:Enterprise-Modus einzugeben, fragt uns das System, welche Art von Wert eingegeben werden soll:

Und erst nach unserer Auswahl können wir den Wert des ausgewählten Typs eingeben.

Somit sind Verzeichniselemente desselben Typs ( Verzeichnis.Städte) kann im selben Attribut gespeichert werden ( Besonderes Merkmal) Werte verschiedener Typen (String, Farben oder Geschmacksrichtungen).

Sie können sich davon selbst überzeugen, indem Sie auf die Elemente des Verzeichnisses klicken Städte im 1C:Enterprise-Modus. Sie lesen eine Testversion der Lektion, vollständige Lektionen sind verfügbar.

Hier ist der Unterscheidungsmerkmalswert ein Verzeichniselement Aromen:

Hier ist die Zeile:

Und hier ist im Allgemeinen ein Element des Nachschlagewerks Farben:

Das sind die Möglichkeiten, die uns ein zusammengesetzter Datentyp eröffnet!

Ich frage mich, wie sich die Funktion verhalten wird TYPWERTE auf den Requisiten DistinctiveElement, mit einem zusammengesetzten Datentyp:

Das ist schon sehr interessant. Schauen wir uns jede Zeile einzeln an.

Die Art der Bedeutung des Unterscheidungsmerkmals für das Element Russland ist gleich NULL. Dies ist das erste Mal, dass wir dieser Art begegnen. Werte dieser Art dienen ausschließlich der Ermittlung des fehlenden Werts bei der Arbeit mit der Datenbank.

Dies ist wahr, da das Element „Russland“ eine Gruppe und kein gewöhnliches Verzeichniselement ist Städte, also hat es kein Feld Besonderes Merkmal. Und der Typ eines fehlenden Werts ist, wie wir oben gelesen haben, immer gleich NULL.

Der Werttyp des Unterscheidungsmerkmals für Perm ist gleich Aromen. Dies trifft zu, da der in der Datenbank für die Stadt Perm eingetragene Wert des Unterscheidungsmerkmals eine Verknüpfung zum Verzeichniselement darstellt Aromen.

Für Krasnojarsk ist der Attributtyp gleich Farben, da der in der Datenbank ausgewählte Wert ein Link zu einem Verzeichniselement ist Farben.

Für Woronesch ist der Attributtyp gleich Linie, da der in die Datenbank eingegebene Wert eine reguläre Zeichenfolge ist.

Indien ist wieder eine Gruppe, daher gibt es keine Bedeutung. Und der Typ des fehlenden Werts ist, wie wir uns erinnern, gleich NULL.

Hier ist das Ding. Wenn Sie zum Verzeichniselement gehen Städte mit Namen Sao Paulo, dann sehen Sie das Feld Besonderes Merkmal absolut überhaupt nicht ausgefüllt. Es ist leer. A Alle leeren Felder eines zusammengesetzten Typs haben eine besondere Bedeutung NICHT DEFINIERT .

MIT NICHT DEFINIERT wir begegnen auch zum ersten Mal. Bedeutung NICHT DEFINIERT Wird verwendet, wenn ein leerer Wert verwendet werden muss, der keinem anderen Typ angehört. Das ist genau unsere Situation. Und der Werttyp NICHT DEFINIERT, wie Sie wahrscheinlich schon vermutet haben, ist gleich NULL.

Funktionstyp

Es benötigt nur einen Parameter – den Namen des primitiven Typs ( LINIE, NUMMER, DATUM, BOOLEAN) oder den Namen der Tabelle, deren Linktyp Sie erhalten möchten.

Das Ergebnis dieses Konstrukts ist ein Wert vom Typ Type für den angegebenen Typ.

Klingt vage, nicht wahr?

Schauen wir uns die Anwendung dieses Designs an und alles wird sofort passen.

Angenommen, wir müssen alle Verzeichniseinträge auswählen Städte, die Verbundstützen haben Besonderes Merkmal hat einen Wert vom Typ LINIE:

Wählen wir nun alle Datensätze aus, die Attributwerte haben Besonderes Merkmal sind Links zu Verzeichniselementen Farben(Tisch Verzeichnis.Farben):

Rückzug

Wie Sie sich erinnern, einige Elemente des Verzeichnisses Städte Ich habe keine Requisiten Besonderes Merkmal. Funktion TYPWERTE für solche Elemente erzeugt es NULL.

Wie können Sie solche Elemente in einer Abfrage auswählen? Hierfür steht ein spezieller logischer Operator zur Verfügung IST NULL(nicht zu verwechseln mit der Funktion IST NULL, die wir weiter unten betrachten werden). Sie lesen eine Testversion der Lektion, vollständige Lektionen sind verfügbar.

Hier ist ein Beispiel für seine Verwendung:

Großartig. Aber ist Ihnen aufgefallen, dass es kein Element des Werttyps „Sao Paulo, Requisiten“ gibt? Besonderes Merkmal den er auch ausgab NULL. Warum ist das geschehen?

Aber die Sache ist, dass die Situation für Gruppen (Russland, Indien, Brasilien) gilt, für die die Angaben ausgefüllt werden müssen Besonderes Merkmal im Prinzip unmöglich, da sie überhaupt nicht vorhanden sind, unterscheidet sich von der Situation für das Sao Paulo-Element, für das das Ausfüllen der Requisiten möglich ist, aber es wird einfach nicht ausgefüllt und entspricht, wie wir uns erinnern, einem besonderer Wert NICHT DEFINIERT.

Um alle Datensätze auszuwählen, die über die erforderlichen Anforderungen verfügen Besonderes Merkmal vorhanden, aber nicht ausgefüllt, sollte eine andere Konstruktion verwendet werden:

Der Vergleich mit UNDEFINED zur Bestimmung leerer (ungefüllter) Attribute funktioniert jedoch nur für zusammengesetzte Typen.

Der logische Operator IS NULL hat übrigens eine Negationsform, die so aussieht:

Logischer Operator LINK

Wählen wir zum Beispiel aus dem Verzeichnis aus Städte nur die Datensätze, die den Wert eines zusammengesetzten Attributs haben Besonderes Merkmal sind ein Link zu einem Verzeichniselement Aromen:

Wie Sie sich erinnern, könnten wir das gleiche Problem mit lösen TYPWERTE Und TYP:

Funktion ISNULL

Die Funktion soll einen Wert ersetzen NULL zu einer anderen Bedeutung.

Wir erinnern uns an die Bedeutung NULL wird zurückgegeben, wenn das angeforderte Attribut (Feld, Eigenschaft) nicht vorhanden ist.

Zum Beispiel Requisiten Besonderes Merkmal für Verzeichnisgruppen Städte:

Funktion IST NULL hilft uns, einen anderen Wert auszugeben, wenn dieser Wert gleich ist NULL. Sie lesen eine Testversion der Lektion, vollständige Lektionen sind verfügbar. Sei in diesem Fall die Zeile „There is no such prop!“:

Es stellt sich heraus, dass wenn der erste Parameter der Funktion IST NULL nicht gleich NULL, dann kehrt er zurück. Wenn es NULL ist, wird der zweite Parameter zurückgegeben.

EXPRESS-Funktion

Diese Funktion gilt nur für Felder, die einen zusammengesetzten Typ haben. Ein hervorragendes Beispiel für einen solchen Bereich ist der Immobilienbereich Besonderes Merkmal für Verzeichniselemente Städte.

Wie wir uns erinnern, können zusammengesetzte Felder einer von mehreren im Konfigurator angegebenen Typen sein.

Für Feld Besonderes Merkmal solche gültigen Typen sind LINIE, Verzeichnis.Farben Und Verzeichnis.Geschmäcker.

Manchmal besteht die Notwendigkeit, die Werte eines zusammengesetzten Felds in einen bestimmten Typ umzuwandeln.

Lassen Sie uns alle Feldwerte auflisten Besonderes Merkmal tippen Referenz.Farben:

Als Ergebnis alle Elementwerte, die vom Typ waren Verzeichnis.Farben, blieben gefüllt und wurden in den angegebenen Typ umgewandelt. Alle Werte anderer Typen ( LINIE, Verzeichnis.Geschmäcker) sind jetzt gleich NULL. Dies ist die Besonderheit der Typumwandlung mithilfe der Funktion ÄUSSERN.

Sie können einen Typ entweder in einen primitiven Typ umwandeln ( BOOLEAN, NUMMER, LINIE, DATUM) oder auf einen Referenztyp. Sie lesen eine Testversion der Lektion, vollständige Lektionen sind verfügbar. Der Typ, in den die Umwandlung durchgeführt wird, muss jedoch in der Liste der Typen für dieses zusammengesetzte Feld enthalten sein, andernfalls gibt das System einen Fehler aus.

Nimm den Test

Test starten

1. Wählen Sie die zutreffendste Aussage

2. Details, die Werte eines von mehreren Typen annehmen können, werden aufgerufen

3. Um den Typ des Attributwerts zu bestimmen, verwenden Sie die Funktion

4. Leere Details eines zusammengesetzten Typs sind wichtig



 


Lesen:



Alle Möglichkeiten, ein Telegram-Konto manuell und automatisch zu löschen

Alle Möglichkeiten, ein Telegram-Konto manuell und automatisch zu löschen

Hallo zusammen! In diesem Artikel kehren wir noch einmal zum Telegram-Messenger zurück. Diesmal schauen wir uns zwar an, wie man ein Telegram-Konto löscht....

Welchen Messenger soll ich wählen?

Welchen Messenger soll ich wählen?

Die Kommunikation zwischen Menschen hat heute den höchsten Stand der Technik erreicht. Fortschritte im Bereich der Computer- und Mobilentwicklung haben gemacht...

Deaktivieren des „Beep“-Dienstes auf Beeline

Deaktivieren des „Beep“-Dienstes auf Beeline

Der „Hallo“-Dienst der Mobilfunkbetreiber erfreut sich auch bei Beeline-Abonnenten großer Beliebtheit. Tatsächlich, während des Wartens...

Wie viele Megabyte sind in einem Gigabyte oder wie rechnet man Speichereinheiten richtig um?

Wie viele Megabyte sind in einem Gigabyte oder wie rechnet man Speichereinheiten richtig um?

Viele Benutzer haben eine nicht sehr angenehme Situation erlebt: Sie kaufen eine Festplatte mit einer Kapazität von beispielsweise 500 Gigabyte, schließen sie an ... an.

Feed-Bild RSS