2012-02-16 72 views
0
DECLARE @timeRange as varchar(max) 
SET @timeRange= '00:30-01:00**00:20-01:00' 

DECLARE @tblTime TABLE(RowNum int identity(1,1),TimeRange ntext) 

INSERT INTO @tblTime SELECT rtrim(ltrim(items)) from split(@timeRange,'**') 
select *from @tblTime 

上述程序將返回三排的中間是空想了解在存儲過程分裂()

而且

DECLARE @timeRange as varchar(max) 
SET @timeRange= '00:30-01:00*00:20-01:00' 

DECLARE @tblTime TABLE(RowNum int identity(1,1),TimeRange ntext) 

INSERT INTO @tblTime SELECT rtrim(ltrim(items)) from split(@timeRange,'*') 
select *from @tblTime 

上面的代碼返回兩行正是我通緝。

我想知道爲什麼split()函數會影響我的結果。

我已經連接字符串與**首先然後拆分,結果是不同於與*連接的字符串。 編輯:分割功能是SageFrame

+0

「split」是什麼樣的?爲什麼'*'在一個和'\ * \ *'在另一個? – gbn 2012-02-16 08:41:44

回答

0

忽略,我認爲應該是**\*\* ...

(我們不知道分割功能樣子)的分隔符參數是char(1)(或varchar(1))。這意味着**被截斷爲*,所以你得到3行。