Sql server 2005 字符串操作的另一个挑战
我必须将数据管理到该文件中,其间有空白:Sql server 2005 字符串操作的另一个挑战,sql-server-2005,tsql,Sql Server 2005,Tsql,我必须将数据管理到该文件中,其间有空白: 0297144600-4799 0297485500-5599 0297144600-0297144799 0297485500-5599 0297144600-0297144799 0297485500-0297485599 我想正常化第一行/第二行,就像最后一行一样,这意味着 0297144600-4799 >> 0297144600-0297144799 挑战在于,它可以采用以下格式:0297144600-4799或已经标准化,并
0297144600-4799 0297485500-5599
0297144600-0297144799 0297485500-5599
0297144600-0297144799 0297485500-0297485599
我想正常化第一行/第二行,就像最后一行一样,这意味着
0297144600-4799 >> 0297144600-0297144799
挑战在于,它可以采用以下格式:0297144600-4799或已经标准化,并且这些条目可以超过2个系列,例如:
0297144600-4799 0297485500-5599 0297486500-6599
但理论上总是用空格分隔,如果你愿意,可以用“|”代替。我确实有一个拆分方法要做,但现在如何组合这个
如果可能的话,尽量避开光标
谢谢这和你想的一样吗
declare @table table (old_pair nvarchar(21), new_pair nvarchar(21), pair_left nvarchar(10), pair_right nvarchar(10))
declare @abnormal nvarchar(max)
set @abnormal = isnull('0297144600-0297144799 0297485500-0297485599','')
--set @abnormal = isnull('0297144600-4799 0297485500-5599','')
--set @abnormal = isnull('0297485500-5599','')
declare @pair nvarchar(max)
declare @pair_left nvarchar(10)
declare @pair_right nvarchar(10)
declare @pair_right_length int
WHILE len(isnull(@abnormal,'')) > 0
BEGIN
IF charindex(' ', @abnormal) = 0
BEGIN
set @pair = @abnormal
END
ELSE
BEGIN
set @pair = left(@abnormal, charindex(' ', @abnormal)-1)
END
set @pair_left = left(@pair, 10)
set @pair_right_length = len(right(@pair,len(@pair)-11))
set @pair_right = left(@pair_left, 10-@pair_right_length) + right(@pair,len(@pair)-11)
insert @table
( old_pair,
new_pair,
pair_left,
pair_right )
select
@pair,
@pair_left + '-' + @pair_right,
@pair_left,
@pair_right
IF @pair = @abnormal
BEGIN
set @abnormal = (right(@abnormal, len(@abnormal)-len(@pair)))
END
ELSE
BEGIN
set @abnormal = (right(@abnormal, len(@abnormal)-(len(@pair)+1)))
END
END
select * from @table
我可以发誓你几天前发布了一个分割函数…分割函数工作得很好,但现在的挑战是数据没有正常化。格式需要是0297144600-0297144799 10位数字,由另一个10位数字分隔。请问你到底在问什么?向我们展示一些中间步骤或逐行操作:你的问题毫无意义。所以你要做的是在一个空间中拆分每一行;b在破折号上分开每一对;c如果第二个字符是四个字符,那么在第一个字符后面加上前六个字符?请您详细解释一下或者确认@Yellowfog的假设好吗?谢谢