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

发布时间 2023-07-06 15:40:36作者: 秋识我

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

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:截取最后一个符号之后的字符串,指定符号为“-”。