Me estoy convirtiendo poco columnas de una tabla determinada entero a través de una secuencia de comandos SQL (esta tabla tiene algunas restricciones predeterminadas para el valor predeterminado).

Tengo que modificar las columnas de la tabla, no en tiempo de ejecución de casting, ¿Qué secuencia de comandos se puede utilizar para lograr esto?

¿Tienes alguna predeterminado definido en la columna de la tabla ? Para ver esto, intentar ver la de crear la estructura de la tabla
Supongo que usted no puede utilizar el Management Studio, es eso correcto ?

OriginalEl autor steave finner | 2012-07-26

7 Comentarios

  1. 26

    Trate de usar CAST(columnName AS INT) AS IntValue.

    por ejemplo,

    SELECT columnName, CAST(columnName AS INT) AS IntValue
    FROM table

    O puede utilizar CONVERT(INT, columnName) AS IntValue.

    ACTUALIZACIÓN: Si necesita modificar el real metadatos de la tabla, entonces primero debe colocar las restricciones, a continuación, modificar la columna:

    es decir,

    ALTER TABLE [Table] DROP CONSTRAINT [ConstraintName];
    GO
    ALTER TABLE [Table] ALTER COLUMN [ColumnName] INT;

    Luego recrear cualquier restricción que usted necesita.

    editado la pregunta por favor, compruebe que quiero instrucción ddl no dml

    OriginalEl autor tobias86

  2. 2

    Si usted está preocupado acerca de cómo cambiar el tipo de dato de la columna puede utilizar un ALTER consulta como sigue.

    ALTER TableName ALTER COLUMN ColumnName INT

    Más, sólo con fines de visualización, puede utilizar el CAST o CONVERT función:

    CAST(columnName AS INT) AS IntegerVal
    CONVERT(int, columnName) AS IntValue
    ya he utilizado este script alter, pero sin embargo cuando me alterar este cuadro que dice tiene algunas limitaciones asociadas a la columna y no puede ser alterado..
    lo siento, olvidé mencionar que , si u quiere modificar una columna , la columna no debe contener ningún valor y su dependencia de la tabla también

    OriginalEl autor Esh

  3. 1

    SELECCIONE CONVERTIR(BIT,’False’) COMO prueba1
    SELECCIONE CONVERTIR(BIT,’True’) COMO test2

    este es un útil

    OriginalEl autor Thaanuja

  4. 1

    Simplemente no podemos alterar la columna de BIT INT. Así que me sugieren para crear la nueva columna de tipo entero en la tabla y, a continuación, utilizando el molde, la actualización de la nueva columna de tipo entero con el existente en los valores de los bits. Luego, al final, puede colocar los BITS de la columna de la tabla.

    Usted puede alterar la columna de bit int al menos en 2008R2 versión..

    OriginalEl autor AnandPhadke

  5. 1

    Finalmente me las arreglé para conseguir trabajo:

    ALTER TABLE tblname DROP CONSTRAINT DF_tbl_tblname_tblcol
    ALTER TABLE tblname ALTER COLUMN tblcol int not null
    ALTER TABLE tblname WITH NOCHECK ADD CONSTRAINT [DF_tbl_tblname_tblcol] DEFAULT (0) FOR tblcol

    He utilizado las anteriores sentencias SQL para alterar la columna de la tabla junto con su constructor.

    OriginalEl autor steave finner

  6. 0

    Creo que se podrían extraer los bits de la columna como un entero por sólo utilizando el estándar CAST() comando:

    SELECT
      CAS(Bit_Column AS int) AS Int_Column
    FROM
      YourTable

    Sin embargo, no estoy seguro de entender lo que usted está tratando de lograr, probablemente usted podría obtener una mejor respuesta si usted proporcionó más detalles, tales como la estructura de la tabla y sus limitaciones.

    quiero cambiar la estructura de la tabla como he campos de bits para broleflag que tiene valor por defecto false ahora quiero cambiar el tipo de datos para la columna de bits a enteros y configuración de la restricción predeterminada a 0
    Ahora es más claro. En tal caso, se puede ver en la respuesta publicada por ?Esh, se debe hacer lo que usted está buscando. Sólo tienes que agregar la restricción para el comando ALTER.
    lo he hecho ya, pero el defecto de las restricciones asociadas al campo no es lo que me permite alterar la columna de la tabla..
    Podría usted por favor enviar el script de creación de la tabla y sus limitaciones, junto con algunas instrucciones INSERT? Esto permitiría a las personas a reproducir su entorno y probar las posibles soluciones. Gracias.

    OriginalEl autor Diego

  7. 0

    Usted está recibiendo un error relacionado con una restricción predeterminada. Por lo tanto usted tiene que soltar esa restricción antes de alterar el tipo de datos de columna…

    Tratar este para encontrar todas las restricciones de acuerdo a esta tabla (usted sólo tiene que encontrar el adecuado defecto en la columna) o el uso SQL Server Management Studio (SSMS) para generar la secuencia de comandos de la tabla, y este tendrá la restricción predeterminada definición.

    select * from sys.all_objects where parent_object_id  = object_id('<tablename>')
    go

    Luego la primera a la caída de la restricción y, a continuación, modificar la columna y agregar el valor predeterminado de nuevo.

    alter table bittoint drop constraint DF__bittoint__col2__45D500F0
    go
    alter table bittoint alter column col2 int
    go
    alter table bittoint add constraint DF__bittoint__col2__45D500F0 default 0 for col2
    go

    OriginalEl autor Gulli Meel

Dejar respuesta

Please enter your comment!
Please enter your name here