当前位置:Gxlcms > 数据库问题 > mssql SUBSTRING和charindex的用法

mssql SUBSTRING和charindex的用法

时间:2021-07-01 10:21:17 帮助过:4人阅读

在工作中用到的例子:

select *
FROM [CSGDC.DataETLDB].[dbo].[StrategiesList] where strategy_name like ‘%基建系统%‘
and SUBSTRING(strategy_name,charindex(‘_‘,strategy_name,12)+1,100) in
( select SUBSTRING(strategy_name,charindex(‘_‘,strategy_name,12)+1,100) as strategy_name1
FROM [CSGDC.DataETLDB].[dbo].[StrategiesList] where strategy_name like ‘%基建系统%‘ group by
SUBSTRING(strategy_name,charindex(‘_‘,strategy_name,12)+1,100)
having count(1)>1) and previous_sql is null

 

from:http://blog.csdn.net/yhc0322/article/details/7073953

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

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

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

select SUBSTRING(‘hello@163.com‘,1,charindex(‘@‘,‘hello@163.com‘)-1)

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(‘hello@163.com‘,charindex(‘@‘,‘hello@163.com‘)-1)

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

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

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

mssql SUBSTRING和charindex的用法

标签:

人气教程排行