类型转换
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 数据类型)。
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方式:
--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)
注:常用日期转换格式
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
select convert(char(20) ,convert(datetime,'20220310') , 21) as dd --2022-03-10 00:00:00.
select convert(char(20) ,convert(datetime,'20220310') , 22) as dd --03/10/22 12:00:00 AM
select convert(char(20) ,convert(datetime,'20220310') , 23) as dd --2022-03-10
select convert(char(20) ,GETDATE() , 21) as dd --2023-06-07 14:10:43.
select convert(datetime,'20220310') as dd --2022-03-10 00:00:00.000
在下表中,左侧的两列表示将datetime或smalldatetime转换为字符数据的style值。给style值加 100,可获得包括世纪数位的四位年份 (yyyy)。
* 默认值(style0 或 100、9 或 109、13 或 113、20 或 120、21 或 121)始终返回世纪数位 (yyyy)。
--实现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’))
博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!