sqlserver按字符截取字段
sql server 按字符截取字段
address='F:\photo\Winter Leaves.jpg'
要求:分段截取每段字符[字段address不能为TEXT类型,否则报错]
解决方法:
insert into student (address,id) values ('F:\photo\Winter Leaves.jpg',5)
---截取字符串A的第一个\左边的字符串
select left(address,charindex('\',address)-1) as A
from student where id=5
输出结果:F:
---截取\中间的字符串
select left(stuff(address,1,charindex('\',address),''),charindex('\',stuff(address,1,charindex('\',address),''))-1)
from student where id=5
输出结果:photo
---截取最后一个\后面的字符串
select reverse(left(reverse(address),charindex('\',reverse(address))-1))
from student where id=5
输出结果:Winter Leaves.jpg
---截取字符串A的首字幕
select STUFF(address,1, 1, '') from student where id=5
输出结果::\photo\Winter Leaves.jpg
CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置。
语法
CHARINDEX ( expression1 , expression2 [ , start_location ] )
参数
expression1
一个表达式,其中包含要寻的字符的次序。expression1 是一个短字符数据类型分类的表达式。
expression2
一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。
start_location
在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是
一个负数或零,则将从 expression2 的起始位置开始搜索。
返回类型
int
注释
如果 expression1 或 expression2 之一属于 Unicode 数据类型(nvarchar 或 nchar)而另一个不属于,则将另一个转换为 Unicode 数据类型。
如果 expression1 或 expression2 之一为 NULL 值,则当数据库兼容级别为 70 或更大时,CHARINDEX 返回 NULL 值。当数据库兼容级别为 65 或更小时,CHARINDEX 仅在 expression1 和 expression2 都为 NULL 时返回 NULL 值。
如果在 expression2 内没有到 expression1,则 CHARINDEX 返回 0。
例一:
CustomName包含客户的First Name和Last Name,它们之间被一个空格隔开。我们用CHARINDX函数确定两个名字中间空格的位置。通过这个方法,我们可以分析ContactName列的空格位置,这样可以只显示这个列的last name部分。
select top 5 substring(ContactName,charindex(' ',ContactName)+1,len(ContactName)) as [Last Name] from customers
CHARINDEX函数到First Name和Last Name之间的空格,所以SUBSTRING函数可以分开ContactName列,这样就只有Last Name被选出。在CHARINDEX函数返回的整数上加1,这样Last Name不是从空格开始。
例二:
计算Northwind.dbo.Customer表中Addresses字段中包含单词Road或者它的缩写Rd的记录数,选择语句类似这样:
select count(*) from Northwind.dbo.Customers where CHARINDEX('Rd',Address) > 0 or CHARINDEX('Road',Address)> 0
局限性:在Oracle 10g中无法使用。提示CHARINDEX 标识符无效
CHARINDEX函数调用方法如下:
CHARINDEX函数返回一个整数,返回的整数是要的字符串在被的字符串中的位置。假如CHARINDEX没有到要的字符串,那么函数整数“0”。让我们看看下面的函数命令执行的结果:
CHARINDEX('SQL', 'Microsoft SQL Server')
这个函数命令将返回在“Microsoft SQL Server”中“SQL”字符串截取 sql的起始位置,在这个例子中,CHARINDEX函数将返回“S”在“Microsoft SQL Server”中的位置11。
接下来,我们看这个CHARINDEX命令:
CHARINDEX('7.0', 'Microsoft SQL Server 2000')
在这个例子中,CHARINDEX返回零,因为字符串“7.0” 不能在“Microsoft SQL Server”中被到。接下来通过两个例子来看看如何使用CHARINDEX函数来解决实际的T-SQL问题。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论