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

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

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  470 随笔 :: 0 文章 :: 22 评论 :: 30万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

类型转换

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’))
posted on   sunwugang  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示