欢迎莅临 SUN WU GANG 的园子!!!

世上无难事,只畏有心人。有心之人,即立志之坚午也,志坚则不畏事之不成。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

类型转换

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’))
posted on 2023-06-06 18:06  sunwugang  阅读(2)  评论(0编辑  收藏  举报