标签归档:SQL_VARIANT_PROPERTY

mssql sqlserver 查询一个变量(或数据列)的数据类型的方法分享


摘要:
下文讲述使用sql脚本获取一个变量或数据列的数据类型的方法分享,如下所示:
实验环境:sqlserver 2017


今天同事给我提了一个有趣的问题,如果获取一张数据表中列的数据类型呢?
当然,我们可以通过很多中方式获取:
通过建表语句,直接查看数据类型
如果系统函数
SQL_VARIANT_PROPERTY查看表达式的数据类型
下文将举例讲述使用
SQL_VARIANT_PROPERTY获取表达式的数据类型的方法,如下:

 declare @maomao1 int
declare @maomao2 decimal(10,2)
declare @maomao3 bit 
declare @maomao4 bigint
declare @maomao5 varchar(10)

set @maomao1 =89
set @maomao2=19.8
set @maomao3=1
set @maomao4=980
set @maomao5 ='sqlblog'
select SQL_VARIANT_PROPERTY(@maomao1,'BaseType')
,SQL_VARIANT_PROPERTY(@maomao2,'BaseType')
,SQL_VARIANT_PROPERTY(@maomao3,'BaseType')
,SQL_VARIANT_PROPERTY(@maomao4,'BaseType')
,SQL_VARIANT_PROPERTY(@maomao5,'BaseType')

go
---数据表列类型获取
create table [maomao365.com]
(keyId int identity,info nvarchar(10))
go
insert into [maomao365.com](info)values
(N'test')
select SQL_VARIANT_PROPERTY(keyId,'BaseType')
,SQL_VARIANT_PROPERTY(info,'BaseType') from 
[maomao365.com]
go
truncate table [maomao365.com]
drop     table [maomao365.com]


注意事项:
SQL_VARIANT_PROPERTY 获取数据类型的表达式的值不能为null

相关阅读:

SQL_VARIANT_PROPERTY关键字应用说明

mssql_sqlserver_表达式类型获取_9709

mssql_sqlserver_表达式类型获取_9709

mssql sqlserver SQL_VARIANT_PROPERTY关键字应用说明


摘要:
返回当前数据的 基本数据类型、精度等其它信息



SQL_VARIANT_PROPERTY 语法说明

SQL_VARIANT_PROPERTY (表达式 ,属性值 )
—————
属性值需为以下内容:
BaseType,Precision,Scale,TotalBytes,Collation,MaxLength
—————
返回值:
根据不同的属性值,返回不同的内容
BaseType:则返回数据类型如:
bigint,binary,char,date,datetime,datetime2,datetimeoffset,
decimal,float,int,money,nchar,numeric,nvarchar,real,
smalldatetime,int,smallmoney,time,tinyint,uniqueidentifier,
varbinary,varchar
Precision:返回数据类型占用的位数
datetime:23
smalldatetime:16
float:53
real:24
decimal (a,b):a
numeric (a,b):a
money:19
smallmoney:10
bigint:19
int:10
smallint:5
tinyint:3
bit:1
其它类型返回0
Scale:返回小数点后的位数
decimal (a,b):b
numeric (a,b):b
money:4
smallmoney:4
datetime:3
其它类型返回:0
TotalBytes:返回创建数据所需的字节数
Collation:字段的排序规则
maxLength:数据类型最大字节数



SQL_VARIANT_PROPERTY 应用举例

 create table test 
(keyId int identity,info decimal(18,2),
info2 varchar(30))
go
insert into test (info,info2)values(12.9,'test')

SELECT   SQL_VARIANT_PROPERTY(keyid,'BaseType') AS '类型',  
         SQL_VARIANT_PROPERTY(info,'Precision') AS '精度1',  
         SQL_VARIANT_PROPERTY(info2,'Scale') AS '精度2',
         SQL_VARIANT_PROPERTY(info2,'maxLength') AS '字节长度'   
FROM      test   
go
drop table test 
mssql_sqlserver_sql_variant_property简介说明

mssql_sqlserver_sql_variant_property简介说明