SQL DATELENGTH() 函数
SQL DATELENGTH() 函数返回表示任何表达式所使用的字节数,并计算表达式的前导和尾随空格。此函数可以返回 bigint 或 int 作为数据类型。
如果表达式具有 nvarchar(max)、varbinary(max) 或 varchar(max) 数据类型,则此函数返回 bigint;否则返回 int。
当与可以存储可变长度数据的数据类型一起使用时,此函数非常有用,例如:
- image
- ntext
- nvarchar
- text
- varbinary
- varchar
语法
以下是 SQL DATALENGTH() 函数的语法:
SELECT DATALENGTH(expression);
表达式 − 它接受我们需要返回长度的数据类型。如果表达式为空,则返回 null。
示例
在下面的示例中,我们通过传递简单的表达式演示了 DATALENGTH() 函数的使用。
以下是用于查找给定名称的长度的查询 −
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 |
+----------+--------+
示例
在下面的示例中,我们将一个日期和一个带有一些空格的单词传递给DATALENGTH()函数,以计算给定表达式的字节数。
以下是SQL查询语句 –
SELECT DATALENGTH(' tutorialspoint.com ') AS word_len,
DATALENGTH('2023-02-01') AS date_len;
输出
以下是上面查询的输出:
+----------+----------+
| word_len | date_len |
+----------+----------+
| 20 | 10 |
+----------+----------+
示例
在下面的示例中,我们将计算客户表中薪水和地址列中的字节数。
让我们使用CREATE语句创建客户表。
CREATE TABLE customers(
ID INT NOT NULL,
NAME VARCHAR(30) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(30),
SALARY DECIMAL(18, 2));
该表存储有ID、姓名、年龄、地址和薪水信息。现在我们使用INSERT语句向客户表中插入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;
以下是客户表 –
+----+----------+-----+-----------+---------+
| 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 |
+---------------+--------------+