SQL server字符串截取——根据指定符号截取字符串/截取文本

 ## - 对字符串进行简单的处理,调用单个函数

1. 情况1:取字符串前X位
用函数LEFT()

SELECT LEFT([字段名],6) FROM DUAL;
2. 情况2:取字符串后X位
用函数RIGHT()
SELECT RIGHT([字段名],6) FROM DUAL;
3. 情况3:取字符串中间位数,例如,取身份证号中的出生年月
用函数SUBSTRING()
SELECT SUBSTRING([字段名],7,6) FROM DUAL;/*从第7位开始,取6个字符*/

 

## -对字符串进行复杂的处理:调用多个函数

【函数介绍】
- CHARINDEX(expressionToFind , expressionToSearch):此函数会在第二个字符表达式中搜索一个字符表达式,这将返回第一个表达式(如果发现存在)的开始位置。需要注意的是:它返回的起始位置是从1开始的,而不是从0开始的。


可以使用函数CHARINDEX()确定指定符号的位置

SELECT CHARINDEX('-',[字段名]) FROM DUAL;/*返回第一个符号“-”所在的位置*/
SELECT CHARINDEX('-',[字段名]CHARINDEX('-',[字段名])+1) FROM DUAL;/*返回第二个符号“-”所在的位置:从第一个符号往后找*/

4. 情况4:按照指定符号截取文本,假设指定符号为“-”,截取字符串第一个符号前的所有内容。

SELECT SUBSTRING([字段名],1,CHARINDEX('-',[字段名])) FROM DUAL;/*从第1位开始,取到第一个符号“-”个为止,包含符号“-”*/
SELECT SUBSTRING([字段名],1,CHARINDEX('-',[字段名])-1) FROM DUAL;/*从第1位开始,取到第一个符号“-”个为止,不包含符号“-”*/

5. 情况5:按照指定符号截取文本,假设指定符号为“-”,截取字符串第二个符号前的所有内容。

SELECT SUBSTRING([字段名],1,CHARINDEX('-',[字段名]CHARINDEX('-',[字段名])+1)) FROM DUAL;/*从第1位开始,取到第二个符号“-”个为止,包含符号“-”*/
SELECT SUBSTRING([字段名],1,CHARINDEX('-',[字段名]CHARINDEX('-',[字段名])+1)-1) FROM DUAL;/*从第1位开始,取到第二个符号“-”个为止,不包含符号“-”*/

 

【函数介绍】
- REVERSE(string_expression ):返回字符串值的相反顺序。
6. 情况6:截取最后一个符号之后的字符串,指定符号为“-”。

REVERSE([字段名]) --反转字符串
CHARINDEX('-',REVERSE([字段名])) --反转字符串后第一个符号位置
SUBSTRING(REVERSE([字段名]),1,CHARINDEX('-',REVERSE([字段名]))) --截取反转字符串
REVERSE(SUBSTRING(REVERSE([字段名]),1,CHARINDEX('-',REVERSE([字段名])))) --复原字符串
posted @   秋识我  阅读(23670)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示