一、对字符串进行简单的处理,调用单个函数 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([字段名])))) --复原字符串 |