SQL SUBSTRING() 函数
SQL SUBSTRING() 函数用于从字符串中检索子字符串(字符串的一部分)。
它接受三个参数 表达式 , 起始位置 和 长度 ,并返回 SQL 服务器中字符、二进制、文本或图像表达式的一部分。
如果起始位置参数的值为 1 ,表示表达式的第一个字符;如果起始位置的值为 长度-1 ,则表示最后一个字符。
注意 :起始位置和长度参数的值必须使用字符数来指定,例如 ntext、char 或 varchar 数据类型,以及用于文本、图像、二进制或 varbinary 数据类型的字节数。
语法
以下是 SQL SUBSTRING() 函数的语法:
SUBSTRING ( expression ,start , length )
参数
- expression − 它是一个字符、二进制、文本、ntext和图像表达式。
-
start − 它是一个整数(或bigint)值,指定返回字符串的起始位置。
-
length − 它是一个正整数,指定返回字符串的长度。
返回值
此函数返回字符的一部分。
示例
在下面的示例中,我们使用SQL的 SUBSTRING() 函数,从表达式 ‘Hello World’ 中的起始位置 2 ,指定长度 5 ,检索字符的一部分。
SELECT SUBSTRING('Hello World', 2, 5) AS NEW_STRING;
输出
上述SQL查询产生以下输出-
+------------+
| NEW_STRING |
+------------+
| ello |
+------------+
示例
如果我们将 开始 参数的值设为 负值 传递给函数。
以下是 SUBSTRING() 函数的另一个示例,如果开始参数的值小于 1 ,返回的表达式将从表达式中指定的第一个字符开始。在这种情况下,返回的字符数是start + length- 1 或 0 的最大值。
SELECT SUBSTRING('TutorialsPoint', -1, 8) AS NEW_STRING;
输出
以下是上述查询的输出−
+------------+
| NEW_STRING |
+------------+
| Tutori |
+------------+
示例
如果start参数的值大于表达式的长度。
以下示例中,我们将start参数的值设置为大于给定表达式的长度。如果start参数的值大于值表达式中的字符数;否则将返回一个零长度的表达式。
SELECT SUBSTRING('Java Programming', 30, 5) AS NEW_STRING;
输出
上面的程序生成以下输出 –
+------------+
| NEW_STRING |
+------------+
| |
+------------+
示例
您可以将表列名作为参数传递给 SUBSTRING() 函数,以从表的 FIRST_NAME 列中检索字符的部分。假设我们使用以下 CREATE 语句创建了一个名为 Customers 的表。
CREATE TABLE CUSTOMERS(
ID INT NOT NULL,
FIRST_NAME VARCHAR (20),
LAST_NAME VARCHAR(20),s
AGE INT NOT NULL,
ADDRESS CHAR (25) ,
SALARY DECIMAL (18, 2));
让我们使用INSERT语句将一些记录插入到Customers表中,如下所示−
INSERT INTO CUSTOMERS VALUES (1, 'Rohan','Verma', 33, 'Hyderbad', 2100.00 );
INSERT INTO CUSTOMERS VALUES (2, 'Kamlesh','Kumar', 30, 'Lucknow', 2500.00 );
INSERT INTO CUSTOMERS VALUES (3, 'Seeta','Sharma', 23, 'Delhi', 3150.00 );
以下SQL查询从 Customer 表的 FIRST_NAME 列的内容中检索字符(子字符串)的部分 –
SELECT ID, FIRST_NAME, SUBSTRING(FIRST_NAME, 2, 5) AS NEW_NAME FROM CUSTOMERS;
输出
以下是上述SQL查询的输出结果:
+----+------------+----------+
| ID | FIRST_NAME | NEW_NAME |
+----+------------+----------+
| 1 | Rohan | ohan |
| 2 | Kamlesh | amles |
| 3 | Seeta | eeta |
+----+------------+----------+