TRY_CONVERT// Konvertierung nach bit

Inhalt

Überblick

SQL Server stellt für die Speicherung von Ja/Nein-Informationen den Datentyp bit zur Verfügung. Die Konvertierung eines Eingangswertes in einen Wert vom Typ bit kann eine kleine Herausforderung darstellen. Idealerweise werden Ja/Nein-Informa­tionen im Quellsystem in einem Datentyp gespeichert, der lediglich eine 0 oder 1 zulässt. Tatsächlich werden Ja/Nein-Informationen auf zum Teil kuriose Weise als Text gespeichert. Zu finden sind die noch verständlichen Texte Y und N für Yes und No oder J und N für Ja und Nein. Zu finden sind aber auch ON und OFF, ein x oder ein Minus-Zeichen und vieles mehr. SQL Server kann für die zahlreichen Varianten der Speicherung einer Ja/Nein-Information keine allgemeingültige Konvertierungsfunktion bereit­stellen. Der Entwickler muss hierfür eine benutzerdefinierte Funktion schreiben, die die Konvertierung durchführt und im Fehlerfall – analog zu der Funktion TRY_CONVERT – ein NULL. Dieser Artikel stellt eine solche die Funktion [dbo].[fnConvertBit] vor. Erwarte­te Werte werden in dieser Funktion hart codiert und in eine 0 oder 1 übersetzt. Für unbekannte Werte wird ein NULL zurückgegeben. Diese Funktion ist ggf. an die tatsächlich gelieferten Werte anzupassen. Eine Unterscheidung, in welchem Datentyp ein Eingangswert übergeben wird, ist nicht erforderlich. Der Parameter p_Value ist vom Typ nvarchar. Sofern Werte vom Typ Kein Text übergeben werden, führt SQL Server eine implizite Konvertierung des übergebenen Wertes in einen Wert vom Typ-nvarchar durch.

[dbo].[fnConvertBit]

Beschreibung

Konvertiert einen übergebenen Eingangswert in den Zieldatentyp bit. Kann der Eingangswert nicht umgewandelt werden, wird NULL zurückgegeben. Der übergebene Wert wird Case Insensitive behandelt.

Syntax

[dbo].[fnConvertBit](@p_value AS nvarchar(5))

Argumente

  • p_value
    Gibt den umzuwandelnden Eingangswert an.

Rückgabe

Gibt den umgewandelten Wert als Wert vom Typ bit zurück, wenn die Umwandlung erfolgreich ist. Kann der Eingangswert nicht umge­wandelt werden, wird NULL zurückgegeben.

Unterstützte Eingangswerte

TrueFalse
‘J’‘N’
‘JA’‘NEIN’
‘Y’‘N’
‘YES’‘NO’
‘1’, ‘-1’‘0’
‘ON’‘OFF’
‘TRUE’‘FALSE’
‘x’‘-‘

Code

 1: CREATE FUNCTION [dbo].[fnConvertBit] (@p_value AS nvarchar(5)) 
 2: RETURNS bit 
 3: AS 
 4: BEGIN 
 5:    -- -------------------------------------------------------------------------------- 
 6:    -- Declare variables 
 7:    -- -------------------------------------------------------------------------------- 
 8:    DECLARE @returnValue       AS bit; 
 9:  
10:    -- -------------------------------------------------------------------------------- 
11:    -- Workload 
12:    -- -------------------------------------------------------------------------------- 
13:    SET @p_value = UPPER(TRIM(@p_value)); 
14:    SET @returnValue = CASE @p_value 
15:                            WHEN N'J'     THEN 1 
16:                            WHEN N'JA'    THEN 1 
17:                            WHEN N'Y'     THEN 1 
18:                            WHEN N'YES'   THEN 1 
19:                            WHEN N'N'     THEN 0 
20:                            WHEN N'NEIN'  THEN 0 
21:                            WHEN N'NO'    THEN 0 
22:                            WHEN N'TRUE'  THEN 1 
23:                            WHEN N'FALSE' THEN 0 
24:                            WHEN N'ON'    THEN 1 
25:                            WHEN N'OFF'   THEN 0 
26:                            WHEN N'-1'    THEN 1 
27:                            WHEN N'1'     THEN 1 
28:                            WHEN N'0'     THEN 0 
29:                            WHEN N'-'     THEN 0 
30:                            ELSE NULL 
31:                         END; 
32:  
33:    RETURN @returnValue; 
34: END;  

Und hier einige Beispiele…

 1: SELECT [dbo].[fnConvertBit](N'1');     -- 1
 2: SELECT [dbo].[fnConvertBit](N'0');     -- 0
 3: SELECT [dbo].[fnConvertBit](N'J');     -- 1
 4: SELECT [dbo].[fnConvertBit](N'ja');    -- 1
 5: SELECT [dbo].[fnConvertBit](N'N');     -- 0
 6: SELECT [dbo].[fnConvertBit](N'nein');  -- 0
 7: SELECT [dbo].[fnConvertBit](N' ');     -- NULL
 8: SELECT [dbo].[fnConvertBit](N'X');     -- NULL
 9: SELECT [dbo].[fnConvertBit](NULL);     -- NULL
10: SELECT [dbo].[fnConvertBit](N'true');  -- 1
11: SELECT [dbo].[fnConvertBit](N'false'); -- 0
12: SELECT [dbo].[fnConvertBit](N'ON');    -- 1
13: SELECT [dbo].[fnConvertBit](N'OFF');   -- 0
14: SELECT [dbo].[fnConvertBit](N'-');     -- 0
15: SELECT [dbo].[fnConvertBit](NULL);     -- 1

Zusammenfassung

SQL Server stellt für die Speicherung von Ja/Nein-Informationen den Datentyp bit zur Verfügung. Die Konvertierung eines Eingangswertes in einen Wert vom Typ bit kann eine kleine Herausforderung darstellen, da Ja/Nein-Informa­tionen im Quellsystem auf sehr unterschiedliche Arten gespeichert werden können. Die Funktion übersetzt übergebene Texte in einen Wert vom Typ bit und simuliert die TRY_CONVERT Funktion, in dem sie bei einem Fehler ein NULL zurückgibt.

Verwandte Artikel