2012-12-14 6 views
7

Auf der Suche nach strengeren Typ Sicherheit und machen es einfacher, Fehler zu erkennen, möchte ich Spalte Arten meiner Ansicht explizit angeben.Kann ich Spaltentypen beim Erstellen einer SQL Server-Ansicht angeben?

Aber während dies funktioniert:

CREATE VIEW [dbo].[myview] (
    [a], 
    [b], 
    [c] 
) 
AS 
SELECT 'a1', 'b1', 'c1'; 

dies nicht gelingt:

CREATE VIEW [dbo].[myview] (
    [a] nvarchar(32) NOT NULL, 
    [b] nvarchar(32) NOT NULL, 
    [c] nvarchar(32) NOT NULL 
) 
AS 
SELECT 'a1', 'b1', 'c1'; 

Gibt es eine korrekte Syntax für das?

Antwort

18

SQL Server muss die Typen ableiten - aber man kann seine Hand zwingen, wenn Sie benötigen:

CREATE VIEW [dbo].[myview] (
    [a], 
    [b], 
    [c] 
) 
AS 
SELECT 
    CONVERT(nvarchar(32),'a1'), 
    CONVERT(nvarchar(32),'b1'), 
    CONVERT(nvarchar(32),'c1'); 

Was die Null/Nicht-Null-Seite der Dinge wieder SQL Server diese abzuleiten hat . Wenn Sie eine Spalte haben, werden Sie wissen not null aber SQL Server ist immer es falsch ist, können Sie es wickeln in einer ISNULL Anweisung mit einem Nicht-Null zweite Argument:

SELECT ISNULL(ColumnSQLServerThinksCanBeNull,'abc') 

Und es wird dann die Spalte beschreiben als not null. Der zweite Wert spielt keine Rolle (schließlich handelt es sich um meine eigene Behauptung, dass die Spalte niemals null sein wird), solange sie einen kompatiblen Typ für die Spalte hat.

Verwandte Themen