以下是Access和SQLServer数据库中的常用转换函数:
需要注意的是,上述转换函数并不是万能的。比如,非数值形式的字符型数据就不能转换成整数型。使用时请注意。
Access中的数据转换函数使用起来非常简单。例如,要将“产品ID”列和“数量”列拼接到一起,就应该将“数量”列转换为字符型。语句如下:
[产品id] + cstr([数量])
如果仅仅是转为字符型,也可以不用转换函数,直接改用“&”拼接也是可以的。具体请参考“运算符 ”。
SQLServer虽然只有两个转换函数,但它们的通用性极强,都可将指定数据转换为另外一种类型。而且,Convert函数还常用于不同格式的日期时间转换,功能非常强大。
该函数的语法格式为:Cast(expression AS data_type[(length)])
其中,expression是任何有效的表达式,包括列名;data_type表示要转换的数据类型 ;length表示要转换的数据类型长度,此参数可选。例如:
[产品id] + cast([数量] as nvarchar(10))
此语句的意思是,将数量列转为10个字符长度的nvarchar字符串之后,与产品ID列连接到一起。
该函数的语法格式为:Convert(data_type[(length)],expression[,style])
其中,前2个参数是必需的,其含义与Cast中的同名参数相同。例如,以下语句和前面的cast示例语句效果完全相同:
[产品id] + convert(nvarchar(10),[数量])
再如,将单价、数量和折扣3列数值相乘后得到的值,转为高精度小数:
convert(decimal(10,2), [单价]*[数量]*(1-[折扣]))
第3个参数style虽然是可选的,但起到的作用非常大,它将决定日期型数据在转换为字符串之后的格式。 假如,当前的系统时间是2018年4月13日9时20分18秒626毫秒,在没有使用style参数时,语句写法如下:
convert(nvarchar,getdate())
执行之后,列的返回值为“04 13 2018 9:20AM”,也就是仅输出当前系统时间以12小时制表示的分钟数。如果希望得到符合中文习惯的完整年月日及时分秒,可将style参数设置为20或120。例如:
convert(nvarchar,getdate(),120)
这样得到的值就是“2018-04-13 09:20:18”。
Convert函数的常用日期样式如下表(仍以“2018年4月13日9时20分18秒626毫秒”的系统时间为例):
由上表可以发现,样式1-8和101-108、样式10-12和110-112的差别仅在于年份上:前面的不带世纪数位,后面的带世纪数位。