医站点医维基

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 460|回复: 1

MSSQL中截取特定的字符串

[复制链接]

109

主题

23

回帖

3550

积分

管理员

积分
3550
发表于 2018-6-18 23:35:35 | 显示全部楼层 |阅读模式

上午遇到一个需求,需要在数据库中截取一个字符串的特定部分:


假设一个字符串是邮箱地址[url=]“hello@163.com[/url]”,最后取到的字符串应该是“hello”。


因为上面的这个需求,看了一下数据库中关于字符串函数这方面的知识,最终可以得到以下几种解决的方法:


一、用到的函数:substring(' ', , )、charindex(' ',' ')


select SUBSTRING([url=]'hello@163.com',1,charindex('@','hello@163.com')-1[/url])


1.substring(字符串表达式,开始位置,长度 ):


从一个指定字符串的指定位置截取制定长度的字符;


第一个参数表示被截取的字符串;


第二个参数表示要在第一个参数中开始截取的位置;


第三个参数表示要截取的长度。


例如:select substring('abc123',1,2)    →返回ab


从字符串‘abc123’的第一个字符开始截取,共截取两个字符,最后得到‘ab’。


2.charindex(字符串表达式1,字符串表达式2[,整数表达式]):


在字符串2中查找字符串1,如果存在返回第一个匹配的位置,如果不存在返回0。如果字符串1和字符串2中有一个是null则返回null。


可以指定在字符串2中查找的起始位置。


例如:select charindex('ab','BCabTabD')    → 返回3


           select charindex('ab','BCabTabD',4)   →返回6


二、用到的函数:left(' ', )、charindex(' ',' ')


select LEFT([url=]'hello@163.com',charindex('@','hello@163.com')-1[/url])


1.left(字符串表达式,整数表达式):


从字符串表达式的最左边开始截取整数表达式个字符。


例如:select left('abcdef',3)   →返回abc



数据库这方面的知识,学的时候感觉简单,也容易理解,但是当学过之后一段时间不用了就会想不起来,这也充分的说明了一个问题:知识的积累也是一个重复的过程!



回复

使用道具 举报

138

主题

436

回帖

1502

积分

版主

积分
1502

热心会员推广达人优秀版主荣誉管理论坛元老

发表于 2018-7-14 17:39:13 | 显示全部楼层
次贴无用,检定完毕!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|关于我们|医维基|网站地图|Archiver|手机版|医疗之家 ( 沪ICP备2023001278号-1 )  

GMT+8, 2024-5-7 05:05 , Processed in 0.116019 second(s), 24 queries .

Designed by Medical BBS

快速回复 返回顶部 返回列表