Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 符合多少标准?_Sql_Sql Server_Tsql - Fatal编程技术网

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分钟,以便接受!!!>三