Sql 符合多少标准?
如果我使用Sql 符合多少标准?,sql,sql-server,tsql,Sql,Sql Server,Tsql,如果我使用或将while条件串在一起,它将返回适合任何条件的结果,对吗 例如,如果我键入 select * from TestTable where Color='White' or Material='Cotton' or Gender='Female' or Length='Short' 它会给我从1个匹配到所有4个匹配条件的结果,对吗 有没有办法知道每个返回结果匹配了多少个条件?您需要在选择中使用大小写表达式。可能是这样的: CASE Color WHEN 'White' T
或
将while条件串在一起,它将返回适合任何条件的结果,对吗
例如,如果我键入
select * from TestTable
where Color='White' or Material='Cotton' or Gender='Female'
or Length='Short'
它会给我从1个匹配到所有4个匹配条件的结果,对吗
有没有办法知道每个返回结果匹配了多少个条件?您需要在
选择中使用大小写表达式。可能是这样的:
CASE Color WHEN 'White' THEN 1 ELSE 0 END +
CASE Material WHEN 'Cotton' THEN 1 ELSE 0 END +
CASE Gender WHEN 'Female' THEN 1 ELSE 0 END +
CASE Length WHEN 'Short' THEN 1 ELSE 0 END AS WhereMatched
您需要在选择中使用大小写表达式。可能是这样的:
CASE Color WHEN 'White' THEN 1 ELSE 0 END +
CASE Material WHEN 'Cotton' THEN 1 ELSE 0 END +
CASE Gender WHEN 'Female' THEN 1 ELSE 0 END +
CASE Length WHEN 'Short' THEN 1 ELSE 0 END AS WhereMatched
一种方法是使用CASE表达式和SUM窗口函数:
CREATE TABLE dbo.testtable(
Color varchar(10)
, Material varchar(10)
, Gender varchar(10)
, Length varchar(10)
);
INSERT INTO dbo.testtable VALUES
('White', 'Cotton', 'Female', 'Short')
, ('White', 'Cotton', 'Female', 'Long')
, ('White', 'Cotton', 'Male', 'Long')
, ('White', 'Nylon', 'Male', 'Long')
SELECT *
,SUM(CASE WHEN Color='White' THEN 1 END) OVER(ORDER BY (SELECT 0)) AS ColorMatches
,SUM(CASE WHEN Material='Cotton' THEN 1 END) OVER(ORDER BY (SELECT 0)) AS MaterialMatches
,SUM(CASE WHEN Gender='Female' THEN 1 END) OVER(ORDER BY (SELECT 0)) AS GenderMatches
,SUM(CASE WHEN Length='Short' THEN 1 END) OVER(ORDER BY (SELECT 0)) AS LengthMatches
FROM TestTable
WHERE
Color='White'
OR Material='Cotton'
OR Gender='Female'
OR Length='Short';
一种方法是使用CASE表达式和SUM窗口函数:
CREATE TABLE dbo.testtable(
Color varchar(10)
, Material varchar(10)
, Gender varchar(10)
, Length varchar(10)
);
INSERT INTO dbo.testtable VALUES
('White', 'Cotton', 'Female', 'Short')
, ('White', 'Cotton', 'Female', 'Long')
, ('White', 'Cotton', 'Male', 'Long')
, ('White', 'Nylon', 'Male', 'Long')
SELECT *
,SUM(CASE WHEN Color='White' THEN 1 END) OVER(ORDER BY (SELECT 0)) AS ColorMatches
,SUM(CASE WHEN Material='Cotton' THEN 1 END) OVER(ORDER BY (SELECT 0)) AS MaterialMatches
,SUM(CASE WHEN Gender='Female' THEN 1 END) OVER(ORDER BY (SELECT 0)) AS GenderMatches
,SUM(CASE WHEN Length='Short' THEN 1 END) OVER(ORDER BY (SELECT 0)) AS LengthMatches
FROM TestTable
WHERE
Color='White'
OR Material='Cotton'
OR Gender='Female'
OR Length='Short';
谢谢!我明白了,我会看看我能用它做什么!谢谢!!!请等待5分钟,以便接受!!!>谢谢!我明白了,我会看看我能用它做什么!谢谢!!!请等待5分钟,以便接受!!!>三