字符串函数和日期函数

Posted on   夜雨初凉  阅读(145)  评论(0编辑  收藏  举报

☆字符串函数:

len(字符串):

返回字符串的字符个数,不包括末尾的空格(1个汉字是1个字符)

   select len('SQL数据库')--6
   select len('SQL数据库   ')--6
   select len(' SQL 数据库')--8

datalength(字符串):

返回字符串的字节数,包括末尾的空格(1个汉字占2个字节)

   select datalength('SQL数据库')--9
   select datalength('SQL数据库 ')--10

charindex(字符串1,字符串2):

查找字符串1在字符串2中的起始下标位置,找不到就返回0

   charindex(字符串1,字符串2,start_position)

从start_position查找字符串1在字符串2中的起始下标位置

select charindex('你','这周日你有空吗?')--4
select charindex('鸭','大吉大利今晚吃鸡')--0
select charindex('你','这周日你有空吗?',3)--4
select charindex('你','这周日你有空吗?',5)--0

lower:转换小写

   select lower('SQL server数据库')

upper:转换大写

   select upper('sql server数据库')

ltrim:清除左边的空格

   select '          左边有空格'
   select ltrim('          左边有空格')

rtrim:清除右边的空格

   select rtrim('右边有空格           ')
   
   --消除一个字符串左右两边的空格
   select rtrim(LTRIM('        两边都有空格        '))

replace:替换字符串

replace(字符串,字符串1,字符串2)

  • 在字符串中,用字符串2替换字符串1
  • 如果在字符串中找不到字符串1,则不替换
--蓝瘦,香菇,本来今天高高兴兴->难受,想哭...
select REPLACE('蓝瘦,香菇,本来今天高高兴兴','蓝瘦,香菇','难受')

select replace('你妹的,今天排位赛5连跪了','你妹','**')

--删掉身份证中的0
select * from studentinfo
select REPLACE(stucard,'0','') from studentinfo

统计身份证中0出现的次数
select LEN(stucard)-len(REPLACE(stucard,'0','')) from studentinfo

stuff(字符串1,start,length,字符串2)

字符串1从start位置删除length个字符,并在start位置插入字符串2。

select stuff('abcdef',2,4,'hello')--ahellof
select stuff('hi,how are you ?',4,3,'who')--hi,who are you ?

select replace(stuff('good',2,2,'xx'),'oo','haha')--gxxd

截取字符串

left(字符串,n) :截取字符串左边n个字符

select left('abcdef',3)--abc

right(字符串,n) :截取字符串右边n个字符

select right('abcdef',3)--def

substring(字符串,开始位置,n) :从开始位置截取n个字符

select substring('10086@qq.com',1,5)--10086
select substring('10086@qq.com',7,6)--qq.com
select substring('10086@qq.com',-1,5)--100

☆日期函数:

getdate(): 返回当前系统时间

select getdate()
print getdate()

用法 :

  1. 增加数据的时候
  insert into stuinfo values(getdate())
  1. 默认约束 : 默认当前系统时间

dateadd(日期部分,要增加的值,日期): 加时间

--计算后天的日期
select DATEADD(dd,2,GETDATE())
--计算昨天的日期
select DATEADD(dd,-1,GETDATE())
--假设我们18个月之后毕业,计算毕业日期
select DATEADD(mm,18,GETDATE())
--假设拖堂10分钟,计算放学时间
select 
--查询每个员工的成年时间,已知出生日期
select DATEADD(YY,18,'出生日期')

datediff(日期部分,开始时间,结束时间): 求时间差

结束时间-开始时间

--距离元旦还有多少天
select datediff(dd,getdate(),'2020-1-1')

--距离下课还有多少分钟
select DATEDIFF(MI,GETDATE(),'2019-12-13 10:10')

--查询每个员工的实际年龄,已知出生日期
select DATEDIFF(YY,'2002-1-1',GETDATE())
--计算你从出生到现在一共活了多少天
select DATEDIFF(DD,'2001-7-7',GETDATE())
	
### datepart(日期部分,日期): 获取部分日期
--获得月份
select DATEPART(MM,GETDATE())

--查询发行时间在6月份的游戏
select * from games where DATEPART(MM,发行时间)=6
--查询本月发行的游戏
select * from games where DATEPART(MM,发行时间)=datepart(mm,GETDATE()) 

datename(日期部分,日期): 返回时间日期的单独部分字符串形式

--获取当前月份
select datename(mm,getdate())
--获取当前小时
select datename(hh,getdate())
--一年中的第几周
select datename(ww,getdate())
--星期几
select datename(dw,getdate()) --字符串形式
select datepart(dw,getdate()) --数字形式

日期部分:

代码词汇 意思
yy
mm
dd
ww 周(一年中的第几周)
dw 星期
hh 小时
mi 分钟
s
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

随笔 - 51, 文章 - 0, 评论 - 0, 阅读 - 10758

Copyright © 2025 夜雨初凉
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示