2010-10-31 68 views
0

解析使用SQL執行字符串text數據

在SQL 2000工作TEXT數據類型,我想執行以下

Select @String = SUBSTRING(@String, @idx + DATALENGTH(@firstDelimiter)/ 2,LEN(@String)) 

注:@String是一種文本,@FirstDelimiter是鍵入Varchar(4)。

爲什麼我無法運行上面的代碼?我如何執行上述操作?

是上述相當於下面這樣

SET @String = RIGHT(@String, LEN(@String) - (@FoundIndex + DATALENGTH(@FirstDelimeter)/2)) 
+0

你意識到@firstDelimiter或DATALENGTH of會在@String中給你一個位置嗎?在分割之前@firstDelimiter是VARCHAR(4)時,最多的結果將是4 ... – 2010-10-31 19:07:39

+0

你能描述一下你想要做什麼嗎?當然,SUBSTRING總是會返回varchar(最多8000),所以如果> 8000,LEN(@String)是沒有意義的。 – gbn 2010-10-31 19:18:42

+0

我在這裏試圖運行一個SUBSTRING例程,爲它提供TEXT來返回TEXT。如果我無法爲此使用SUBSTRING,還有什麼其他方法可以實現? – Kobojunkie 2010-10-31 20:00:41

回答

1

SQL Server 2000的TEXT數據類型不支持常用的字符串處理函數。這只是在SQL Server的後續版本中切換到VARCHAR(MAX)的許多原因之一 - 該類型將支持所有常用字符串函數。

不幸的是,對於SQL Server 2000,你會遇到TEXT數據類型,如果你使用這種數據類型,你只能使用它非常有限的一組字符串函數 - 請參閱關於MSDN here的文檔。

正如你所看到的,SUBSTRING功能的支持 - 但該MSDN docs也明確指出串的返回類型是VARCHAR類型 - 不是一個TEXT

SQL Server 2000的數據類型的字符串操作是一個令人討厭的噩夢 - 如果您有任何機會,請升級到2005或更高版本並使用VARCHAR(MAX)而不是 - 您將省去很多悲傷和浪費時間。 ...