TEXTPTR (Transact-SQL)
傳回對應於 text、ntext 或 image 資料行的 varbinary 格式文字指標值。擷取的文字指標值可用在 READTEXT、WRITETEXT 和 UPDATETEXT 陳述式中。
重要事項: |
---|
未來的 Microsoft SQL Server 發行版本將不再提供此功能。請避免在新的開發工作中使用此功能,並計劃修改目前使用此功能的應用程式。 無法使用替代功能。 |
語法
TEXTPTR ( column )
引數
column
這是要用的 text、ntext 或 image 資料行。
傳回類型
varbinary
備註
在 SQL Server 2005 中,如果是含同資料列文字的資料表,TEXTPTR 會傳回要處理之文字的控制代碼。即使文字值是 NULL,您也可以取得有效的文字指標。
在 SQL Server 2005 中,檢視資料行無法使用 TEXTPTR 函數。您只能將它用於資料表資料行。如果檢視資料行要使用 TEXTPTR 函數,您必須利用 sp_dbcmptlevel,將相容性層級設為 80。
如果資料表沒有同資料列文字,且尚未利用 UPDATETEXT 陳述式來初始化 text、ntext 或 image 資料行,TEXTPTR 會傳回 Null 指標。
請利用 TEXTVALID 來測試文字指標是否存在。如果有效的文字指標不存在,您便無法使用 UPDATETEXT、WRITETEXT 或 READTEXT。
另外,當您使用 text、ntext 和 image 資料時,這些函數和陳述式也很有用。
函數或陳述式 | 描述 |
---|---|
PATINDEX('%pattern%' , expression) |
傳回指定字元字串在 text 或 ntext 資料行中的字元位置。 |
DATALENGTH(expression) |
傳回 text、ntext 和 image 資料行中的資料長度。 |
SET TEXTSIZE |
傳回 SELECT 陳述式所要傳回的 text、ntext 或 image 資料的限制 (以位元組為單位)。 |
SUBSTRING(text_column, start, length) |
傳回指定的 start 位移所指定之 varchar 字串和 length。長度應該小於 8 KB。 |
範例
附註: |
---|
若要執行下列範例,您必須安裝 pubs 資料庫。如需有關如何安裝 pubs 資料庫的資訊,請參閱<下載 Northwind 和 pubs 範例資料庫>。 |
A. 使用 TEXTPTR
下列範例會利用 TEXTPTR
函數來尋找 pubs
資料庫的 pub_info
資料表中之 New Moon Books
的相關聯 image 資料行 logo
。這個文字指標放在本機變數 @ptrval.
中。
USE pubs
GO
DECLARE @ptrval varbinary(16)
SELECT @ptrval = TEXTPTR(logo)
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id
AND p.pub_name = 'New Moon Books'
GO
B. 搭配同資料列文字來使用 TEXTPTR
在 SQL Server 中,同資料列文字指標必須如下列範例所示,在交易內使用。
CREATE TABLE t1 (c1 int, c2 text)
EXEC sp_tableoption 't1', 'text in row', 'on'
INSERT t1 VALUES ('1', 'This is text.')
GO
BEGIN TRAN
DECLARE @ptrval VARBINARY(16)
SELECT @ptrval = TEXTPTR(c2)
FROM t1
WHERE c1 = 1
READTEXT t1.c2 @ptrval 0 1
COMMIT
C. 傳回文字資料
下列範例會從 pub_info
資料表中,選取 pub_id
資料行和 pr_info
資料行的 16 位元組文字指標。
USE pubs
GO
SELECT pub_id, TEXTPTR(pr_info)
FROM pub_info
ORDER BY pub_id
GO
以下為結果集:
pub_id
------ ----------------------------------
0736 0x6c0000000000feffb801000001000100
0877 0x6d0000000000feffb801000001000300
1389 0x6e0000000000feffb801000001000500
1622 0x700000000000feffb801000001000900
1756 0x710000000000feffb801000001000b00
9901 0x720000000000feffb801000001000d00
9952 0x6f0000000000feffb801000001000700
9999 0x730000000000feffb801000001000f00
(8 row(s) affected)
下列範例會顯示如何在不使用 TEXTPTR 的情況下,傳回文字的前 8000
位元組。
USE pubs
GO
SET TEXTSIZE 8000
SELECT pub_id, pr_info
FROM pub_info
ORDER BY pub_id
GO
以下為結果集:
pub_id pr_info
------ -----------------------------------------------------------------
0736 New Moon Books (NMB) has just released another top ten publication. With the latest publication this makes NMB the hottest new publisher of the year!
0877 This is sample text data for Binnet & Hardley, publisher 0877 in the pubs database. Binnet & Hardley is located in Washington, D.C.
This is sample text data for Binnet & Hardley, publisher 0877 in the pubs database. Binnet & Hardley is located in Washi
1389 This is sample text data for Algodata Infosystems, publisher 1389 in the pubs database. Algodata Infosystems is located in Berkeley, California.
9999 This is sample text data for Lucerne Publishing, publisher 9999 in the pubs database. Lucerne publishing is located in Paris, France.
This is sample text data for Lucerne Publishing, publisher 9999 in the pubs database. Lucerne publishing is located in
(8 row(s) affected)
D. 傳回特定文字資料
下列範例會尋找 pubs
資料庫的 pub_info
資料表中之 pub_id``0736
的相關聯 text
資料行 (pr_info
)。它先宣告本機變數 @val
。之後,將文字指標 (大型二進位字串) 放在 @val
中,將它當作一個參數來提供給 READTEXT
陳述式。這會傳回從第 5 位元組 (位移 4) 開始的 10 個位元組。
USE pubs
GO
DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(pr_info)
FROM pub_info
WHERE pub_id = '0736'
READTEXT pub_info.pr_info @val 4 10
GO
以下為結果集:
pr_info
-----------------------------------------------------------------------
is sample
(1 row(s) affected)
請參閱
參考
DATALENGTH (Transact-SQL)
PATINDEX (Transact-SQL)
READTEXT (Transact-SQL)
SET TEXTSIZE (Transact-SQL)
Text 和 Image 函數 (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)