利用PARSENAME和CHARINDEX两种方法分割字符串组合
PARSENAME:返回对象名称的指定部分。可以检索的对象部分有对象名、所有者名称、数据库名称和服务器名称。
语法:PARSENAME ( 'object_name' , object_piece )
备注:如果存在下列条件之一,则 PARSENAME 返回 NULL:
·object_name 或 object_piece 为 NULL。
·发生语法错误。
请求的对象部分长度为 0,且不是有效的 Microsoft SQL Server 2005 标识符。长度为零的对象的名称将使整个限定名称无效。有关详细信息,请参阅使用标识符作为对象名称。
参数:'object_name'
要检索其指定部分的对象的名称。object_name 的数据类型为 sysname。此参数是可选的限定对象名称。如果对象名称的所有部分都是限定的,则此名称可包含四部分:服务器名称、数据库名称、所有者名称以及对象名称。
object_piece:要返回的对象部分。object_piece 的数据类型为 int 值,可以为下列值。
1 = 对象名称
2 = 架构名称
3 = 数据库名称
4 = 服务器名称
返回类型:nchar
利用该函数可以分割四个以下的字符串组合:
declare @txt varchar(50), @index int
set @txt = '广州.上海.北京.天津'
select @index = len(@txt) - len(replace(@txt, '.', '')) + 1
while (@index > 0)
begin
print parsename(@txt, @index)
select @index = @index - 1
end
超出四个以上的字符串组合,用charindex截取字符索引
declare @txt varchar(50), @index int
set @txt = '广州.上海.北京.天津.合肥'
select @index = charindex('.', @txt)
if @index = 0
begin
print @txt
return
end
while (@index > 0)
begin
print left(@txt, @index - 1)
select @txt = substring(@txt, @index + 1, len(@txt)), @index = charindex('.', @txt)
end
print @txt