SQL FIND_IN_SET函数

SQL FIND_IN_SET函数

结构化查询语言的FIND_IN_SET函数显示多个字符串中搜索字符串的位置。

FIND_IN_SET字符串函数的语法

语法1: 此语法使用SQL表的两个或多个列名与FIND_IN_SET函数一起使用:

SELECT FIND_IN_SET(Searched_String, Column_Name1, column_Name2, Column_Name3,……. Column_NameN) AS Alias_Name FROM Table_Name;

在Find_In_Set语法中,我们必须指定要搜索字符串的那些列的名称。

语法2: 此语法使用带有字符串的FIND_IN_SET函数:

SELECT FIND_IN_SET(Searched_string, "String1, String2, String3, …… StringN") AS Alias_Name;

语法3: 此语法使用FIND_IN_SET函数与单个字符一起使用:

SELECT FIND_IN_SET(Searched_character, "Character_1, character_2, Character_3, ……., Character_N") AS Alias_Name;

查找集合字符串函数示例

示例 1: 下面的查询显示给定字符列表中 ‘S’ 字符的位置:

SELECT FIND_IN_SET( 'S', ''H, I, A, P, Q, S, R, T, V, M'' ) AS S_Findinset;

输出:

S_Findinset

6

示例 2: 下面的语句显示了“Congratulations”字符串中“u”字符的位置:

SELECT FIND_IN_SET( ‘u’, ‘C, o, n, g, r, a, t, u, l, a, t, i, o, n, s ‘) AS Wishes u_Findinset;

输出:

S_Findinset

8

示例3: 以下的SELECT查询找到字符串列表中 ‘New’ 字符串的位置:

SELECT FIND_IN_SET('NEW', ''NEW, DELHI, IS, THE, CAPITAL, OF, INDIA'') AS NEW_Findinset;

输出:

NEW_Findinset

1

示例 4: 这个示例使用在结构化查询语言中的FIND_IN_SET函数与表格一起使用。

在这个示例中,我们需要创建一个新的SQL表格,通过该表格我们将会在列上执行FIND_IN_SET()函数。

在SQL数据库中创建新表格的语法如下:

CREATE TABLE table_name
(
First_Column_of_table Data Type (character_size of First Column),  
Second_Column_of_table Data Type (character_size of the Second column ),  
Third_Column_of_table Data Type (character_size of the Third column),  
...  

Last_Column_of_table Data Type (character_size of the Last column)
);  

下面的CREATE语句创建了 Student_Grade 表:

CREATE TABLE Student_Grade
(
Roll_No INT PRIMARY KEY,  
First_Name VARCHAR (100),  
Last_Name VARCHAR (100), 
First_City Varchar(120),
Second_City Varchar(120),
New_City Varchar(120),
Hindi_Marks INT, 
Maths_Marks INT, 
Grade Varchar (80)
);

下面的INSERT查询将学生的成绩和分数记录插入到 Student_Grade 表中:

INSERT INTO Student_Grade (Roll_No, First_Name, Last_Name, First_City, Second_City, New_City, Hindi_Marks, Maths_Marks, Grade) VALUES (10, Aman, Sharma, Lucknow Chandigarh, Ghaziabad, 88, 95, A2);

INSERT INTO Student_Grade 
(Roll_No, First_Name, Last_Name, First_City, Second_City, New_City, Hindi_Marks, Maths_Marks, Grade) 
VALUES ( 02, Vishal, Sharma, Chandigarh, Ghaziabad, Delhi, 95, 82, A1 );

INSERT INTO Student_Grade 
(Roll_No, First_Name, Last_Name, First_City, Second_City, New_City, Hindi_Marks, Maths_Marks, Grade) 
VALUES (07, Raj, Gupta, Delhi, Ghaziabad, Lucknow, 91, 95, A1);

INSERT INTO Student_Grade 
(Roll_No, First_Name, Last_Name, First_City, Second_City, New_City, Hindi_Marks, Maths_Marks, Grade)  
VALUES (04, Yash, Singhania, Ghaziabad, Delhi, Lucknow, 85, 82, A2);

INSERT INTO Student_Grade 
(Roll_No, First_Name, Last_Name, First_City, Second_City, New_City, Hindi_Marks, Maths_Marks, Grade) 
VALUES (11, Vinay, Roy, Delhi, Kanpur, Ghaziabad, 95, 97, A1);

INSERT INTO Student_Grade 
(Roll_No, First_Name, Last_Name, First_City, Second_City, New_City, Hindi_Marks, Maths_Marks, Grade) 
VALUES (16, Manoj, Gupta, Ghaziabad, Meerut, Chandigarh, 95, 90, B1);


INSERT INTO Student_Grade 
(Roll_No, First_Name, Last_Name, First_City, Second_City, New_City, Hindi_Marks, Maths_Marks, Grade) 
VALUES (19, Ram, Gupta, Lucknow, Ghaziabad, Chandigarh, 89, 95, A2);

以下SELECT语句显示了上述 Student_Grade 表中插入的记录:

SELECT * FROM Student_Grade;
Roll_No First_Name Last_Name First_City Second_City New_City Hindi_Marks Maths_Marks Grade
10 Aman Sharma Lucknow Chandigarh Ghaziabad 88 95 A2
02 Vishal Sharma Chandigarh Ghaziabad Ghaziabad 95 82 A1
07 Raj Gupta Delhi Ghaziabad Lucknow 91 95 A1
04 Yash Singhania Ghaziabad Delhi Lucknow 85 82 A2
11 Vinay Roy Delhi Kanpur Ghaziabad 95 97 A1
16 Manoj Gupta Ghaziabad Meerut Chandigarh 95 90 B1
19 Ram Gupta Lucknow Ghaziabad Chandigarh 89 95 A2

查询1: 下面的SELECT查询在上述的Student_Grade表中使用了FIND_IN_SET函数,并使用了First_City、Second_City、New_City列:

SELECT First_City, Second_City, New_City FIND_IN_SET('Ghaziabad', First_City, Second_City, New_City) AS Ghaziabad_Findinset FROM Student_Grade;

这个SQL语句显示了Ghaziabad市在表格的三列中的位置。

输出:

First_City Second_City New_City Ghaziabad_Findinset
Lucknow Chandigarh Ghaziabad 3
Chandigarh Ghaziabad Ghaziabad 3
Delhi Ghaziabad Lucknow 2
Ghaziabad Delhi Lucknow 1
Delhi Kanpur Ghaziabad 3
Ghaziabad Meerut Chandigarh 1
Lucknow Ghaziabad Chandigarh 2

查询2: 以下SELECT查询使用FIND_IN_SET函数与上述Student_Grade表中Roll_No大于2的学生的Hindi_Marks和Maths_Marks列:

SELECT Roll_No, Hindi_Marks, Maths_Marks(95, Hindi_Marks, Maths_Marks) AS 95_Findinset FROM Student_Grade WHERE Roll_No > 2;

输出:

Roll_No Hindi_Marks Maths_Marks 95_Findinset
07 91 95 2
04 85 82 Null
11 95 97 1
16 95 90 1
19 89 95 2

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程