SQL TEXTVALID()函数
SQL的 TEXTVALID() 函数用于验证指针的值。
它接受两个参数: table.column 和 text_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() 函数来验证列中每个值是否存在有效的文本指针 CITY 的 Customers 表。
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.