切换导航
简历
工具
演示
查询
导航菜单
服务端
30
前端
114
数据库
82
进阶开发
8
桌面程序
2
QA
15
软件使用
36
规范协议
5
操作系统
11
AI
0
复用资源
6
硬件
0
标签
SQL Server
Redis
MySQL
其它
Oracle
外部链接
.NET Core SDK和运行时安装包
淘宝 NPM 镜像
查询网
Tables Generator线上表格转换工具
引用cdn在线脚本和样式
首页
数据库
SQL Server 中数据类型转换
[TOC] ## 1. 数据类型转换函数 ### 1.1. CAST 函数 **语法:**CAST(expression as date_type) **参数说明:** + expression:任何有效的SQL Server表达式 + as:用于分割两个参数,再as之前的是要处理的数据,再as之后是要转换的数据类型 + data_type:目标系统所提供的数据类型,包括bigint和sql_variant,不能使用用户自定义的数据类型 **使用例子:** + 1、将字符串截断:(类似于convert()函数) ```SQL select cast('122222212121211assasddsa' as varchar(12)); --结果:122222212121 ``` + 2、将字符串的数字转化为数字型 ```SQL select cast('123' as int) --结果:123 ``` + 3、如果将带小数位的字符串,转化为数字类型会报错 ```SQL select cast('123.23' as int) --结果:在将varchar值‘123.23’转换成数据类型int时失败 ``` + 4、将带小数位的字符串,可以定义decimal格式类型: ```SQL select cast('123.23' as decimal(10,2)); --结果:123.23 ``` > 说明:decimal类型,需要首先定义decimal值的精度与小数位数:decimal(10,2),精度为:10,小数位为2 + 5、decimal类型,如果不定义精度和小数位,默认为精度为18,小数位为0 ```SQL select cast('123.23' as decimal); --结果为:123 ``` + 6、如果''和null转化为int时结果都是0 ```SQL SELECT CAST('' AS INT) --结果:0 SELECT CAST(NULL AS INT) --结果:0 ``` ### 1.2. CONVERT 函数 #### 2.1. 日期时间类型转换成字符串类型对照 ```SQL SELECT CONVERT(VARCHAR(100), GETDATE(), 0); -- 05 7 2023 4:47PM SELECT CONVERT(VARCHAR(100), GETDATE(), 1); -- 05/07/23 SELECT CONVERT(VARCHAR(100), GETDATE(), 2); -- 23.05.07 SELECT CONVERT(VARCHAR(100), GETDATE(), 3); -- 07/05/23 SELECT CONVERT(VARCHAR(100), GETDATE(), 4); -- 07.05.23 SELECT CONVERT(VARCHAR(100), GETDATE(), 5); -- 07-05-23 SELECT CONVERT(VARCHAR(100), GETDATE(), 6); -- 07 05 23 SELECT CONVERT(VARCHAR(100), GETDATE(), 7); -- 05 07, 23 SELECT CONVERT(VARCHAR(100), GETDATE(), 8); -- 16:49:11 SELECT CONVERT(VARCHAR(100), GETDATE(), 9); -- 05 7 2023 4:49:19:600PM SELECT CONVERT(VARCHAR(100), GETDATE(), 10); -- 05-07-23 SELECT CONVERT(VARCHAR(100), GETDATE(), 11); -- 23/05/07 SELECT CONVERT(VARCHAR(100), GETDATE(), 12); -- 230507 SELECT CONVERT(VARCHAR(100), GETDATE(), 13); -- 07 05 2023 16:50:24:677 SELECT CONVERT(VARCHAR(100), GETDATE(), 14); -- 16:50:33:957 SELECT CONVERT(VARCHAR(100), GETDATE(), 20); -- 2023-05-07 16:50:51 SELECT CONVERT(VARCHAR(100), GETDATE(), 21); -- 2023-05-07 16:51:00.680 SELECT CONVERT(VARCHAR(100), GETDATE(), 22); -- 05/07/23 4:51:11 PM SELECT CONVERT(VARCHAR(100), GETDATE(), 23); -- 2023-05-07 SELECT CONVERT(VARCHAR(100), GETDATE(), 24); -- 16:51:28 SELECT CONVERT(VARCHAR(100), GETDATE(), 25); -- 2023-05-07 16:51:38.537 SELECT CONVERT(VARCHAR(100), GETDATE(), 100); -- 05 7 2023 4:51PM SELECT CONVERT(VARCHAR(100), GETDATE(), 101); -- 05/07/2023 SELECT CONVERT(VARCHAR(100), GETDATE(), 102); -- 2023.05.07 SELECT CONVERT(VARCHAR(100), GETDATE(), 103); -- 07/05/2023 SELECT CONVERT(VARCHAR(100), GETDATE(), 104); -- 07.05.2023 SELECT CONVERT(VARCHAR(100), GETDATE(), 105); -- 07-05-2023 SELECT CONVERT(VARCHAR(100), GETDATE(), 106); -- 07 05 2023 SELECT CONVERT(VARCHAR(100), GETDATE(), 107); -- 05 07, 2023 SELECT CONVERT(VARCHAR(100), GETDATE(), 108); -- 16:53:12 SELECT CONVERT(VARCHAR(100), GETDATE(), 109); -- 05 7 2023 4:53:21:720PM SELECT CONVERT(VARCHAR(100), GETDATE(), 110); -- 05-07-2023 SELECT CONVERT(VARCHAR(100), GETDATE(), 111); -- 2023/05/07 SELECT CONVERT(VARCHAR(100), GETDATE(), 112); -- 20230507 SELECT CONVERT(VARCHAR(100), GETDATE(), 113); -- 07 05 2023 16:54:00:690 SELECT CONVERT(VARCHAR(100), GETDATE(), 114); -- 16:54:10:123 SELECT CONVERT(VARCHAR(100), GETDATE(), 120); -- 2023-05-07 16:54:18 SELECT CONVERT(VARCHAR(100), GETDATE(), 121); -- 2023-05-07 16:54:30.230 SELECT CONVERT(VARCHAR(100), GETDATE(), 126); -- 2023-05-07T16:54:30.230 SELECT CONVERT(VARCHAR(100), GETDATE(), 130); -- 17 ???? 1444 4:54:30:230PM SELECT CONVERT(VARCHAR(100), GETDATE(), 131); -- 17/10/1444 4:54:30:230PM ``` ## 2. 数据类型的隐式转换 ### 2.1. 空字符串转成数字 对数值类型赋值空字符`''`,根据不同的数字类型,实际赋值的是0,0.00或直接报错 ```SQL -- DECIMAL 类型赋值空字符时,会直接报错(从数据类型 varchar 转换为 numeric 时出错。) DECLARE @i INT = '',@j FLOAT = '',@h MONEY = ''--,@k DECIMAL(18,2) = '' SELECT @i,@j,@h --,@k ``` |i(INT)|j(FLOAT)|h(MONEY)| |--|--|--| |0|0|0.00| > **注意:**这里说的是空字符而非空值(NULL),数字类型也是可以为NULL的
扫一扫手机看
点击排行
windows 文件资源管理器使用
Layui 弹窗open使用说明
SQL Server 中字符串函数使用
C# 使用QQ邮箱代理做邮件接收功能
SQL Server关于apply的两种形式cross apply 和 outer apply
ASP.NET MVC 模型的自定义验证
nvm安装及常用命令
SQL Server 中数据类型转换
SQL Server 中WITH AS短语的使用
IE浏览器下AJAX缓存问题导致数据不更新的解决办法
订阅号