declare @string nvarchar(4000)
declare @ch nvarchar(4000)
set @string='abc|acdb|c|ddd'+'|'
while (@string<>'')
begin
set @ch=left(@string,charindex('|',@string,1)-1)
print @ch
set @string=stuff(@string,1,charindex('|',@string,1),'')
end
-----------------------------
abc
acdb
c
ddd
declare @ch nvarchar(4000)
set @string='abc|acdb|c|ddd'+'|'
while (@string<>'')
begin
set @ch=left(@string,charindex('|',@string,1)-1)
print @ch
set @string=stuff(@string,1,charindex('|',@string,1),'')
end
-----------------------------
abc
acdb
c
ddd
解决方案 »
- 如何实现跨服务器的事务操作?
- TOP N 和SET ROWCOUNT N的区别是什么
- SQL2000安装问题
- 我在使用BCP导出数据时出现下面这个错误,不知是何原因(数据库已启动,表名也没错)
- 如何自定义36进制(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)的自定义数据类型,并作为一个表的自增字段?
- 请问如何令一个表中的某个字段是另一个表中的主键字段
- 关于修改主键
- 请问sql server 7.0能在windows 2000 profession下运行么?
- ●求写SQL(SQLServer7)●
- 一个看似简单的SQL查询
- 如何解决应用程序未与信任 SQL Server 连接相关联?
- 关于触发器引起的锁表问题!
string=001|acdb|c|ddd|002|acdb|c|ddd
我需要的结果是
001|acdb|c|ddd
001
acdb
c
ddd
002|acdb|c|ddd
002
acdb
c
ddd
declare @string nvarchar(4000)
declare @ch1 nvarchar(4000)
declare @ch2 nvarchar(4000)
set @string='001|acdb|c|ddd|002|acdb|c|ddd'+'|0'
while (@string<>'')
begin
set @ch1=left(@string,charindex('|0',@string,1)-1)
print @ch1
set @ch1=@ch1+'|'
while(@ch1<>'')
begin
set @ch2=left(@ch1,charindex('|',@ch1,1)-1)
print @ch2
set @ch1=stuff(@ch1,1,charindex('|',@ch1,1),'')
end
set @string=stuff(@string,1,charindex('|0',@string,1)+1,'')
end--------------------
返回结果001|acdb|c|ddd
001
acdb
c
ddd
02|acdb|c|ddd
02
acdb
c
ddd
declare @ch1 nvarchar(4000)
declare @ch2 nvarchar(4000)
set @string='001|acdb|c|ddd|002|acdb|c|ddd'+'|0'
while (@string<>'0')
begin
set @ch1=left(@string,charindex('|0',@string,1)-1)
print @ch1
set @ch1=@ch1+'|'
while(@ch1<>'')
begin
set @ch2=left(@ch1,charindex('|',@ch1,1)-1)
print @ch2
set @ch1=stuff(@ch1,1,charindex('|',@ch1,1),'')
end
set @string='0'+stuff(@string,1,charindex('|0',@string,1)+1,'')
end
-------
返回001|acdb|c|ddd
001
acdb
c
ddd
002|acdb|c|ddd
002
acdb
c
ddd