SQL - TEXTVALID() 函式



SQL 的TEXTVALID()函式用於驗證指標值。

它接受兩個引數table.columntext_ptr,並檢查指定的文字指標是否有效。如果且僅當指定的文字指標有效時,它返回1;否則返回零(0)。如果指定的列是不同的資料型別(如 varchar、int 等),則會丟擲錯誤。

注意 - 文字列的識別符號必須包含表名。在沒有有效文字指標的情況下,您不能使用update-text、write-text 或 read-text

語法

以下是 SQL TEXTVALID() 函式的語法 -

TEXTVALID ( 'table.column' ,text_ ptr ) 

引數

  • table - 它是要使用的表的名稱。
  • column - 它是要用於驗證的表的列。
  • text_ptr - 它是要檢查的文字指標。

返回值

此函式返回一個整數值(1 表示有效,0 表示無效)。

示例

如果指定的文字指標是有效的文字指標,則TEXTVALID()函式返回1

假設我們使用CREATE語句建立了一個名為Customers的表,如下所示 -

CREATE TABLE CUSTOMERS(    
ID INT NOT NULL,    
NAME VARCHAR (20) NOT NULL,    
AGE INT NOT NULL,    
ADDRESS CHAR (25) ,    
SALARY DECIMAL (18, 2),
PIN NTEXT,
CITY TEXT);

現在,讓我們使用INSERT語句將一些記錄插入到Customers表中,如下所示

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY, PIN, CITY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00, '380001', 'Jamalpur');
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY, PIN, CITY) VALUES (2, 'Khilan', 25, 'Delhi', 1500.00,'110006','Chandni Chowk' );
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY, PIN, CITY) VALUES (3, 'kaushik', 23, 'Kota', 2000.00,'325001', 'Aamli'); 
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY, PIN, CITY) VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00,'400002', 'Kalbadevi' );

以下 SQL 查詢驗證Customers表中PIN列的每個值是否存在有效的文字指標 -

SELECT ID, NAME, PIN, TEXTVALID('CUSTOMERS.PIN', TEXTPTR(PIN)) AS PIN_VALID_POINTER FROM CUSTOMERS;

輸出

以上 SQL 查詢產生以下輸出 -

+----+------------+-------------------------------+
| ID | NAME       | PIN       | PIN_VALID_POINTER | 
+----+------------+-------------------------------+
|  1 | Ramesh     | 380001    |  1                | 
|  2 | Khilan     | 110006    |  1                |
|  3 | kaushik    | 325001    |  1                |
|  4 | Chaitali   | 400002    |  1                |
+----+------------+-----------+-------------------+

示例

您還可以將TEXT 資料型別列作為引數傳遞給 SQL TEXTPTR() 函式,並使用TEXTVALID()函式來驗證Customers表中CITY列的每個值是否存在有效的文字指標 -

SELECT ID, NAME, CITY, TEXTVALID('CUSTOMERS.CITY', TEXTPTR(CITY)) AS CITY_VALID_POINTER FROM CUSTOMERS;

輸出

執行上述語句後,它將產生以下輸出 -

+----+------------+---------------+--------------------+ 
| ID | NAME       | CITY          | CITY_VALID_POINTER | 
+----+------------+---------------+--------------------+ 
|  1 | Ramesh     | Jamalpur      |  1                 | 
|  2 | Khilan     | Chandni Chowk |  1                 |
|  3 | kaushik    | Aamli         |  1                 |
|  4 | Chaitali   | Aamli         |  1                 |
+----+------------+---------------+--------------------+

示例

如果指定的文字指標不是有效的文字指標,則TEXTVALID()函式返回0

以下 SQL 查詢驗證Customers表中NAME列的每個值是否存在有效的文字指標 -

SELECT ID, NAME, TEXTVALID('CUSTOMERS.NAME', TEXTPTR(CITY)) AS NAME_VALID_POINTER FROM CUSTOMERS;

輸出

+----+------------+--------------------+ 
| ID | NAME       | NAME_VALID_POINTER | 
+----+------------+--------------------+ 
|  1 | Ramesh     | 0                  |    
|  2 | Khilan     | 0                  |   
|  3 | kaushik    | 0                  |  
|  4 | Chaitali   | 0                  |   
+----+------------+--------------------+

示例

如果我們將DECIMAL 資料型別列作為引數傳遞給此函式,它將丟擲錯誤。

在以下示例中,我們將SALARY(資料型別 decimal)列作為引數傳遞給TEXTPTR()函式,並使用 SQL TEXTVALID()函式來驗證Customers表中SALARY列的每個值是否存在有效的文字指標 -

SELECT ID, SALARY,TEXTVALID('CUSTOMERS.SALARY', TEXTPTR(SALARY)) AS NAME_VALID_POINTER FROM CUSTOMERS;

輸出

執行上述語句後,它將產生以下輸出 -

Argument data type decimal is invalid for argument 1 of textptr function.
sql-text-image-functions.htm
廣告