如何在 SQL Server 中选择匹配列表中所有项目的行组?
在本文中,我们将看到,如何选择一组与 SQL Server 列表中的所有项目匹配的行。
我们可以通过两种方法执行上述函数。那些是:
- 通过使用 IN运算符
- 通过使用 STRING_SPLIT 方法执行 JOIN
IN运算符:它允许您在 WHERE 子句中指定值列表。
STRING_SPLIT() :此函数可用于使用指定的分隔符拆分字符表达式,如逗号(',')等。
对于演示,请按照以下步骤操作:
第一步:创建数据库
可以使用 CREATE 命令创建数据库。
询问:
CREATE DATABASE geeks;
第 2 步:使用数据库
使用以下 SQL 语句将数据库上下文切换到极客:
询问:
USE geeks;
第三步:表定义
我们的极客数据库中有以下 demo_table。
询问:
CREATE TABLE demo_table(
NAME VARCHAR(20),
AGE INT,
CITY VARCHAR(20) );
第 4 步:将数据插入表中
询问:
INSERT INTO demo_table VALUES
('ROMY KUMARI', 22, 'NEW DELHI'),
('PUSHKAR JHA',23, 'NEW DELHI'),
('RINKLE ARORA',23, 'PUNJAB'),
('AKASH GUPTA', 23, 'UTTAR PRADESH'),
('AKANKSHA GUPTA',22, 'PUNJAB'),
('SUJATA JHA', 30,'PATNA')
('PREETI GIRI', 26,'BANGLORE'),
('PREM GUPTA',31,'PUNE');
第五步:查看表的数据
询问:
SELECT * FROM demo_table;
输出:
第 6 步:选择与列表中的项目匹配的一组行。
出于演示的目的,假设我们有一个包含以下项目的列表:(21, 45, 23, 31)。我们将选择 AGE 列中的值与列表中的项目匹配的行组。
方法一:使用 IN运算符
句法:
SELECT *FROM table_name WHERE column_name IN (list);
询问:
SELECT * FROM demo_table WHERE AGE IN (21, 45, 23, 31);
输出:
方法 2:使用 STRING_SPLIT()函数执行 JOIN
句法:
SELECT * FROM table_name
JOIN STRING_SPLIT('list', 'separator')
ON value = column_name;
询问:
SELECT * FROM demo_table
JOIN STRING_SPLIT('21, 45, 23, 31', ',')
ON value = AGE;
输出: