SQL - DATELENGTH() 函数



SQL 的DATELENGTH()函数返回用于表示任何表达式的字节数,并且还计算表达式的开头和结尾空格。此函数可能返回bigintint作为数据类型。

如果表达式具有nvarchar(max)、varbinary(max)或varchar(max)数据类型,则此函数返回bigint;否则,它返回int。

当与可以存储可变长度数据的类型一起使用时,此函数非常有用,例如:

  • image
  • ntext
  • nvarchar
  • text
  • varbinary
  • varchar

语法

以下是 SQL DATALENGTH() 函数的语法:

SELECT DATALENGTH(expression);

表达式 - 它采用我们需要返回长度的数据类型。如果表达式为空,则返回空。

示例

在以下示例中,我们通过传递简单的表达式来演示 DATELENGTH() 函数的使用。

以下是查找给定名称长度的查询:

SELECT DATALENGTH('Aman kumar') AS lengthOf_Name;

输出

以下是上述查询的输出:

+----------------+
| lengthOf_Name  |
+----------------+
|             10 |
+----------------+

以下示例返回使用的数 据类型的字节数。这演示了使用不同的数据类型表示相同值需要多少数据。

以下是查询:

DECLARE @var_int int = 1
DECLARE @var_smallint smallint = 1
DECLARE @var_decimal decimal = 1
DECLARE @var_bigint bigint = 1
 
SELECT
   'int' datatype, DATALENGTH(@var_int) bytes
   UNION
SELECT
   'smallint' datatype, DATALENGTH(@var_smallint) bytes
   UNION
SELECT
   'decimal' datatype, DATALENGTH(@var_decimal) bytes
   UNION
SELECT
   'bigint' datatype, DATALENGTH(@var_bigint) bytes

输出

以下是上述查询的输出:

+----------+--------+
| datatype |  bytes |
+----------+--------+
| bigint   |      8 |
+----------+--------+
| decimal  |      5 |
+----------+--------+
| int      |      4 |
+----------+--------+
| smallint |      2 |
+----------+--------+

示例

在以下示例中,我们将日期和包含一些空格的单词传递给 DATELENGTH() 函数,以计算给定表达式的字节数。

以下是 SQL 查询:

SELECT DATALENGTH(' tutorialspoint.com ') AS word_len, 
DATALENGTH('2023-02-01') AS date_len;

输出

以下是上述查询的输出:

+----------+----------+
| word_len | date_len |
+----------+----------+
|       20 |	   10 |
+----------+----------+

示例

在以下示例中,我们计算 customers 表的 salary 和 address 列中的字节数。

让我们使用 CREATE 语句创建 customer 表。

CREATE TABLE customers(
ID INT NOT NULL, 
NAME VARCHAR(30) NOT NULL,
AGE INT NOT NULL, 
ADDRESS CHAR(30), 
SALARY DECIMAL(18, 2));

该表存储 ID、NAME、AGE、ADDRESS 和 SALARY。现在,我们使用 INSERT 语句在 customers 表中插入 7 条记录。

INSERT INTO customers VALUES(1, 'Ramesh', 32, 'Ahmedabad', 2000.00);
INSERT INTO customers VALUES(2, 'Khilan', 25, 'Delhi', 1500.00);
INSERT INTO customers VALUES(3, 'kaushik', 23, 'Kota', 2000.00);
INSERT INTO customers VALUES(4, 'Chaitali', 25, 'Mumbai', 6500.00);
INSERT INTO customers VALUES(5, 'Hardik', 27, 'Bhopal', 8500.00);
INSERT INTO customers VALUES(6, 'Komal', 22, 'MP', 4500.00);
INSERT INTO customers VALUES(7, 'Aman', 23, 'Ranchi', null);

让我们使用 SELECT 语句显示 customers 表。

SELECT * FROM customers;

以下是 customers 表:

+----+----------+-----+-----------+---------+
| ID | NAME     | AGE | ADDRESS   | SALARY  |
+----+----------+-----+-----------+---------+
|  1 | Ramesh   |  32 | Ahmedabad | 2000.00 |
|  2 | Khilan   |  25 | Delhi     | 1500.00 |
|  3 | kaushik  |  23 | Kota      | 2000.00 |
|  4 | Chaitali |  25 | Mumbai    | 6500.00 |
|  5 | Hardik   |  27 | Bhopal    | 8500.00 |
|  6 | Komal    |  22 | MP        | 4500.00 |
|  7 | Aman     |  23 | Ranchi    |    NULL |
+----+----------+-----+-----------+---------+

以下查询显示特定列的字节数:

SELECT 
   DATALENGTH(ADDRESS) AS Address_Bytes,
   DATALENGTH(SALARY) AS Salary_Bytes
   FROM customers;

输出

以下是上述查询的输出:

+---------------+--------------+
| Address_Bytes | Salary_Bytes |
+---------------+--------------+
|            30 |            5 |
|            30 |            5 |
|            30 |            5 |
|            30 |            5 |
|            30 |            5 |
|            30 |            5 |
|            30 |            5 |
+---------------+--------------+
sql-datatype-functions.htm
广告