Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21

Discussione: SQL colonna calcolata

  1. #1

    SQL colonna calcolata

    ho una tabella con

    colonna A di tipo (int) con specifica identity
    colonna B di tipo (nvarchar)

    vorrei che la colonna C fosse: colonna A + colonna B

    ho provato ad inserire la formula in "espressione calcolata" ma mi ritorna un errore, più che giusto, che dice che non può sommare due tipi diversi.

    Cè la possibilita di inserire una formula che mi converta il tipo (int) della colonna A in tipo (nvarchar) e quindi sommarle?

    potrei avere problemi nel caso la colonna C fosse anche chiave primaria?

  2. #2
    scusa, ma logicamente dovresti fare l'operazione opposta, cioè:

    "convertire in int il valore nvarchar" ed eseguire l'operazione di calcolo, se fai il contrario ottieni un operazione di concatenazione.

    Per quanto detto potresti fare cosi:
    codice:
    SELECT tuecolonne,
               a + (CAST(b as int)) as [Colonna calcolata]
    FROM   [TuaTabella]
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  3. #3
    ok grazie!!!, era l'espressione che mi mancava...

    comunque non ho fatto un select ma lho inserita in "specifica colonna calcolata" di SqlServer Management Studio (ovviamente senza il select).

    l'unica cosa è che ho dovuto fare un pò di cambiamenti perchè una volta inserita l'espressione mi imposta forzatamente consenti null, visto che era mia intenzione farla come chiave primaria ora non posso più. Comunque no problem ho risolto in altra maniera...

    ma se volessi comunque creare un colonna calcolata e farla ache chiave primaria non ci sono soluzioni?

  4. #4
    Ma non ha senzo inserire una colonna calcolata come chiave primaria, cmq volendo farlo devi specificare una query o stored procedure che in fase di inserimento inserisca il calcolo all'interno della colonna che vuoi come chiave primara, ovviamente devi essere sicuro al 1000% che sia univoca, ma ripeto, non vedo l'utilità di questi tipo di colonne se poi sql server può fornire viste con cache di questi dati.
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  5. #5
    ok tu intendi creare una vista che ti restituisca la colonna calcolata invece di inserire una colonna aggiuntiva... si in effetti così si rispamierebbe spazio su disco.
    ok magari ci provo non sono molto pratico di viste e T-Sql.

    visto che siamo in tema ti chiedo un altra cosa al volo:

    sto cercando di fare una stored procedure che mi crei una tabella che prenda il nome dal valore di un parametro ma non ci riesco, nel senso che ho dichiarato il parametro

    @nometabella nvarchar(50)

    ma poi non riesco ad avere il riferimento nel comando create

    CREATE TABLE [dbo].[@nometabella]

    così non funziona, cè una soluzione a questo problema?

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    ehm scusa, solo una domanda...ma l'ambiente che usi è .Net ?

  7. #7
    si perchè?

  8. #8
    Prima di spiegarti come fare è necessario che tu sappia che per poter funzionare, questa stored procedure deve essere eseguita da un utente che abbia i privileggi da amministratore, di seguito ti riporto un esempio semplice di generazione dinamica della tabella, poi sarai tu ad adattarla alle tue eseigenze:

    codice:
    create procedure DynamicTableCreate
        @name  nvarchar(128)
    as
        declare @query nvarchar(4000)
        set @query = N'CREATE TABLE ' + QUOTENAME(@name) + N' (param1 int primary key not null, valore varchar(50) not null)';
        exec sp_executesql @query
    param1 e valore sono campi inventati.
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  9. #9
    Originariamente inviato da djciko
    ehm scusa, solo una domanda...ma l'ambiente che usi è .Net ?
    Cmq sta parlando di SQL
    Chi sbaglia, apprende meglio di chi non ha mai commesso errori.
    DOT.NET Addicted since 2006 (My Blog)

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    E' che non esiste una sezione apposita per SQL.
    Ho chiesto e puo' rimanere qui, visto che è comunque in un progetto .net.

    Era una domanda "di servizio" per una discussione interna

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.