## - 对字符串进行简单的处理,调用单个函数
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([字段名])))) --复原字符串标签:符号,截取,server,CHARINDEX,DUAL,字符串,字段名 From: https://www.cnblogs.com/stopthinking/p/17532322.html