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
廣告