SQL 比较字符串
在这个SQL部分,我们将讨论如何在结构化查询语言中比较两个或多个字符串。
我们可以使用STRCMP字符串函数、LIKE运算符和等号运算符来比较两个或多个字符串。
STRCMP字符串函数
STRCMP是一个用于比较指定两个字符串的函数,如果第一个字符串的长度等于第二个字符串的长度,则返回0。如果第一个字符串的长度大于第二个字符串的长度,则函数返回1,否则返回-1。
STRCMP函数的语法
SELECT STRCMP (String_1, String_2);
STRCMP字符串函数的示例
示例1: 以下SELECT查询比较了JAVATPOINT和EXAMPLES字符串的长度:
SELECT STRCMP ('JAVATPOINT', 'EXAMPLES');
输出:
1
示例2: 以下的SELECT查询使用STRCMP函数比较了两个句子的长度:
SELECT STRCMP ('Website is good', 'javatpoint is good');
输出:
-1
示例3: 以下的SELECT查询比较了两个城市的长度:
SELECT STRCMP ( 'Delhi', 'Noida');
输出:
0
LIKE操作符
LIKE操作符将与字段的每一行匹配特定的模式,并在输出中返回匹配的值。这个操作符通常与SQL语句中的WHERE子句一起使用。
Like操作符的语法
SELECT Column_Name_1, Column_Name_2, Column_Name_3, ……, Column_Name_N FROM Table_Name WHERE Column_Name LIKE Pattern;
LIKE运算符的示例
让我们来看下面的学生表:
Roll_No | First_Name | City | Age | Percentage | Grade |
---|---|---|---|---|---|
101 | Akash | Delhi | 18 | 89 | A2 |
102 | Bhavesh | Kanpur | 19 | 93 | A1 |
103 | Yash | Delhi | 20 | 89 | A2 |
104 | Bhavna | Delhi | 19 | 78 | B1 |
105 | Yatin | Lucknow | 20 | 75 | B1 |
106 | Ishika | Ghaziabad | 19 | 91 | C1 |
107 | Vivek | Goa | 20 | 80 | B2 |
查询1: 以下查询显示了以上学生表中名字以’B’字母开头的学生记录:
SELECT Roll_No, First_Name, Percentage, Grade FROM Student WHERE First_Name LIKE 'B%';
查询结果如下:
Roll_No | First_Name | Percentage | Grade |
---|---|---|---|
102 | Bhavesh | 93 | A1 |
104 | Bhavna | 78 | B1 |
与上述输出的示例一样,表中只包含Bhavesh和Bhavna学生的记录,因为他们的名字以字母B开头。
查询2: 下面的查询显示了给定的Student表中名字中包含字符’a’的学生的记录:
SELECT Roll_No, First_Name, Percentage, Grade FROM Student WHERE First_Name LIKE '%a%' ;
上述查询的输出:
Roll_No | First_Name | City | Age | Percentage | Grade |
---|---|---|---|---|---|
101 | Akash | Delhi | 18 | 89 | A2 |
102 | Bhavesh | Kanpur | 19 | 93 | A1 |
103 | Yash | Delhi | 20 | 89 | A2 |
104 | Bhavna | Delhi | 19 | 78 | B1 |
105 | Yatin | Lucknow | 20 | 75 | B1 |
106 | Ishika | Ghaziabad | 19 | 91 | C1 |
等号运算符 (=)
它是一种比较运算符,用于显示给定SQL表中匹配的数据。
这个运算符在结构化查询语言中被数据库用户广泛使用。
如果数据库表中的列值与查询中指定的值相同,则该运算符将返回TRUE行。
等号运算符的语法:
SELECT * FROM Table_Name WHERE Column_Name = Value;
等号运算符示例
我们参考下面的Worker表格:
Worker_Id | Worker_Name | Worker_City | Worker_Salary | Worker_Bonus |
---|---|---|---|---|
101 | Anuj | Ghaziabad | 35000 | 2000 |
102 | Tushar | Lucknow | 29000 | 3000 |
103 | Vivek | Kolkata | 35000 | 2500 |
104 | Shivam | Goa | 22000 | 3000 |
以下查询显示了工人表中工资为35000的工人的记录:
SELECT * FROM Worker WHERE Worker_Salary = 35000;
输出:
Worker_Id | Worker_Name | Worker_City | Worker_Salary | Worker_Bonus |
---|---|---|---|---|
101 | Anuj | Ghaziabad | 35000 | 2000 |
103 | Vivek | Kolkata | 35000 | 2500 |