类型转换
CAST、CONVERT都可以执行数据类型转换。在大部分情况下,两者执行同样的功能,不同的是CONVERT还提供一些特别的日期格式转换,而CAST没有这个功能。
CAST是ANSI兼容的,推荐使用CONVERT。
注:T-SQL总支持运算符,数字+数字(如果将数字以‘1’+‘1’形式--会自动转换数据类型,结果为2),即求和; 字符串 + 字符串--拼接字符串;例如:
CONVERT
(data_type [ ( length ) ] , expression [ , style ])
CAST
(expression
AS
data_type [ (length ) ])
- data_type:目标系统所提供的数据类型,包括 bigint 和 sql_variant。不能使用用户定义的数据类型。
- length:nchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。
- 日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);
- 数字格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。
1 2 3 4 5 6 7 8 | select 1+2 as sumno --retrun 3 select '1' + '2' as sumno --return 12 select 'a' + 'b' as ab --return ab select 'abc' + CONVERT ( varchar ,2) as abc2 --return asc ,注: 字符串和数字拼接时,需对数字进行类型转换,否则将报错 select CONVERT ( varchar ,2.21) FloatToString select CONVERT ( varchar ,2) IntToString select CONVERT ( varchar (10),GETDATE(),23) DateToString --(yyyy-MM-dd) 23 表示日期格式,有多种方式 |
- int to string:CONVERT(varchar,2) ——select CONVERT(varchar,2) IntToString
- float/decimal to string:CONVERT(varchar,2.21) ——select CONVERT(varchar,2.21) FloatToString
- date to string:CONVERT(varchar(10),GETDATE(),23)——select CONVERT(varchar(10),GETDATE(),23) DateToString --(yyyy-MM-dd) 23 表示日期格式,有多种方式
cast方式:
1 2 3 4 5 6 | --int to decimal or decimal SELECT CAST ( '123' AS float ), CAST ( '456.233' AS decimal (18,2)) --string to datetime select cast ( '2012-11-11' as datetime) as StringToDatetimeByCast --datetime to varchar 无法指定日期格式 select cast (GETDATE() as varchar ) |
注:常用日期转换格式
1 2 3 4 5 6 7 8 | SELECT CAST (GETDATE() AS varchar ) --输出 07 1 2013 9:56PM SELECT CONVERT ( varchar ,GETDATE(),5) --输出 01-07-13 SELECT CONVERT ( varchar ,GETDATE(),111) --输出 2013/07/01 SELECT CONVERT ( varchar ,GETDATE(),1) --输出 07/01/13 SELECT CONVERT ( varchar ,GETDATE(),102) --输出 2020.11.24 SELECT CONVERT ( varchar ,GETDATE(),111) --输出 2020/11/24 SELECT CONVERT ( varchar ,GETDATE(),120) --输出 2020-11-24 09:29:55 SELECT CONVERT ( varchar ,GETDATE(),108) --输出 09:29:55<br>select convert(char(20) ,convert(datetime,'20220310') , 21) as dd --2022-03-10 00:00:00.<br>select convert(char(20) ,convert(datetime,'20220310') , 22) as dd --03/10/22 12:00:00 AM<br><em id="__mceDel">select convert(char(20) ,convert(datetime,'20220310') , 23) as dd --2022-03-10<br></em><em id="__mceDel" style="font-size: 13px; font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif"><em id="__mceDel"><em id="__mceDel"><em id="__mceDel">select convert(char(20) ,GETDATE() , 21) as dd --2023-06-07 14:10:43.<br></em></em></em></em><em id="__mceDel" style="font-size: 13px; font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif"><em id="__mceDel"><em id="__mceDel"><em id="__mceDel"><em id="__mceDel">select convert(datetime,'20220310') as dd --2022-03-10 00:00:00.000</em></em></em></em></em> |
在下表中,左侧的两列表示将datetime或smalldatetime转换为字符数据的style值。给style值加 100,可获得包括世纪数位的四位年份 (yyyy)。
* 默认值(style0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | --实现Image类型转Text ------------------实现Image类型转Text------------------ --1.新增一字段 ALTER TABLE [InformedConsentInfo] ADD SignatureImg1 text GO --2.将数据更新至新增列 UPDATE [InformedConsentInfo] SET SignatureImg1 = CAST ( CAST (SignatureImg AS text) AS text) GO --3.删除错误插入的字段 ALTER TABLE [InformedConsentInfo] DROP COLUMN SignatureImg GO --4.对新增的字段进行重命名 sp_rename 'InformedConsentInfo.SignatureImg1' , 'SignatureImg' , 'column' |
--大写
upper
(
'aaaaa'
)
--小写
lower
(
'BBBB'
)
--截取左边第1位字符串
left
(‘abCdsE’,1)
--获取字符串长度
len(‘abCdsE’)
--截取从第2位到最后一位字符串
SUBSTRING
(‘abCdsE’,2,len(‘abCdsE’))
博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix