Announcement

Collapse
No announcement yet.

In SQL2008 aus einem int ein nvarchar(10) mit ALTER?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • In SQL2008 aus einem int ein nvarchar(10) mit ALTER?

    Moin,

    folgender SQL-Code war falsch:

    Code:
    CREATE TABLE Test
    (
    Test1 int NOT,
    Test2 int NULL,
    Test3 int NULL
    )

    Ich würde jetzt aus dem int bei Test2 ein nvarchar(10) machen.

    Hat mir jemand den Code dafür?

    Code:
    ALTER Test (Test2) nvarchar(10);
    (Der funktioniert natürlich nicht

    Grüße

  • #2
    Zusatzfrage:

    Wie definiere ich eigentlich eine 4. Spalte "Test4" mit einer Kommazahl?

    Ich will die Zahl 8,3 aufnehmen. "double(1, 1)" funktioniert aber nicht.

    Code:
    CREATE TABLE Test
    (
    Test1 int NOT,
    Test2 int NULL,
    Test3 int NULL,
    Test4 double(1, 1) NULL
    )

    ... Aller Anfang ist schwer ... ;-(

    Comment


    • #3
      Alter Table in der Doku

      relevantes Zitat aus der Doku

      C. Ändern des Datentyps einer Spalte

      Im folgenden Beispiel wird eine Spalte einer Tabelle von INT in DECIMAL geändert.

      CREATE TABLE dbo.doc_exy (column_a INT ) ;
      GO
      INSERT INTO dbo.doc_exy (column_a) VALUES (10) ;
      GO
      ALTER TABLE dbo.doc_exy ALTER COLUMN column_a DECIMAL (5, 2) ;
      GO
      DROP TABLE dbo.doc_exy ;
      GO

      SQL Datentypen in der Doku

      Double gibts nicht. Dem entspricht eher float oder real. Je nach Anwendungsfall willst du aber bestimmt eher decimal oder numeric.

      Comment


      • #4
        Unter SQl-Server kann man den Datentyp wie folgt ändern, solange die Datentypen der enthaltenen Daten eingigermassen kompatibel sind...
        [HIGHLIGHT="SQL"]CREATE TABLE DBo.Test
        (Test1 int NULL ,
        Test2 int NULL,
        Test3 int NULL,
        Test4 NUMERIC (2, 1)
        );
        SELECT * FROM sys.columns WHERE object_id = OBJECT_ID ('DBo.Test');

        ALTER TABLE Test ALTER COLUMN test2 NVARCHAR(10);

        SELECT * FROM sys.columns WHERE object_id = OBJECT_ID ('DBo.Test');

        ALTER TABLE Test ALTER COLUMN test2 INT;

        SELECT * FROM sys.columns WHERE object_id = OBJECT_ID ('DBo.Test') ;

        INSERT INTO DBo.Test VALUES (1, 1 , 1, 8.3);

        ALTER TABLE Test ALTER COLUMN test2 NVARCHAR(10)

        INSERT INTO DBo.Test VALUES (1, 'bla' , 1, 8.3);

        SELECT * FROM Dbo.Test;

        BEGIN TRY;
        ALTER TABLE Test ALTER COLUMN test2 INT;
        END TRy
        BEGIN CATCH;
        RAISERROR ( 'Das klappt nun nicht mehr...', 16, 1)
        END CATCH ;

        SELECT * FROM sys.columns WHERE object_id = OBJECT_ID ('DBo.Test') ;

        DROP TABLE dbo.Test[/HIGHLIGHT]

        Comment

        Working...
        X