gpt4 book ai didi

获取列类型的SQL语句

转载 作者:行者123 更新时间:2023-12-02 07:45:22 25 4
gpt4 key购买 nike

有没有可以返回表中列的类型的SQL语句?

最佳答案

  • 在 ISO SQL(即当今大多数 RDBMS)中,您可以使用 INFORMATION_SCHEMA.COLUMNS View which SQL Server supports
    • 此 View 的 DATA_TYPE 列包含 T-SQL/SQL Server 类型名称,异常(exception)包含参数化类型的参数,这可能会导致意外/无意的列行为。
      • 例如,给定输入为 nvarchar(max)datetime2(3)decimal(10,5) 的三列,则输出将分别为 nvarchardatetime2decimal
        • 这是一个问题,因为列类型为 nvarchar(没有 (max)(123))is the same as nvarchar(1) ,并且使用 decimaldecimal(18,0) 相同,无法存储非整数值
      • 解决方案是查看CHARACTER_OCTET_LENGTH(对于二进制)、CHARACTER_MAXIMUM_LENGTH(对于 charnchar)、DATETIME_PRECISION(对于 datetime2datetimeoffset)和 NUMERIC_PRECISION NUMERIC_SCALE(对于 decimalnumeric),以便重建类型的参数值。
        • 请注意,可以忽略 float(n),因为 SQL Server 仅支持别名的 float(24)float(53)分别由 DATA_TYPE 列中的 realfloat 表示。
<小时/>
WITH q AS (

SELECT
c.TABLE_SCHEMA,
c.TABLE_NAME,
c.ORDINAL_POSITION,
c.COLUMN_NAME,
c.DATA_TYPE,
CASE
WHEN c.DATA_TYPE IN ( N'binary', N'varbinary' ) THEN ( CASE c.CHARACTER_OCTET_LENGTH WHEN -1 THEN N'(max)' ELSE CONCAT( N'(', c.CHARACTER_OCTET_LENGTH , N')' ) END )
WHEN c.DATA_TYPE IN ( N'char', N'varchar', N'nchar', N'nvarchar' ) THEN ( CASE c.CHARACTER_MAXIMUM_LENGTH WHEN -1 THEN N'(max)' ELSE CONCAT( N'(', c.CHARACTER_MAXIMUM_LENGTH, N')' ) END )
WHEN c.DATA_TYPE IN ( N'datetime2', N'datetimeoffset' ) THEN CONCAT( N'(', c.DATETIME_PRECISION, N')' )
WHEN c.DATA_TYPE IN ( N'decimal', N'numeric' ) THEN CONCAT( N'(', c.NUMERIC_PRECISION , N',', c.NUMERIC_SCALE, N')' )
END AS DATA_TYPE_PARAMETER,
CASE c.IS_NULLABLE
WHEN N'NO' THEN N' NOT NULL'
WHEN N'YES' THEN N' NULL'
END AS IS_NULLABLE2
FROM
INFORMATION_SCHEMA.COLUMNS AS c
)
SELECT
q.TABLE_SCHEMA,
q.TABLE_NAME,
q.ORDINAL_POSITION,
q.COLUMN_NAME,
CONCAT( q.DATA_TYPE, ISNULL( q.DATA_TYPE_PARAMETER, N'' ), q.IS_NULLABLE2 ) AS FULL_DATA_TYPE

FROM
q
WHERE
q.TABLE_SCHEMA = 'yourSchemaName' AND
q.TABLE_NAME = 'yourTableName' AND
q.COLUMN_NAME = 'yourColumnName'

ORDER BY
q.TABLE_SCHEMA,
q.TABLE_NAME,
q.ORDINAL_POSITION;
<小时/>

给出这样的结果:

enter image description here

关于获取列类型的SQL语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13405572/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com