在T-SQL中使用了“any,all和some”吗?

时间:2018-05-29 21:32:54

标签: sql-server tsql

我一直在教自己T-SQL大约一年,现在才遇到任何和所有运营商。到目前为止,我从未见过它们在任何示例代码中使用过,这些是很少使用的,是否有优选的运算符来获得相同的结果?

2 个答案:

答案 0 :(得分:2)

我在生产代码中使用了ANY一次。我刚才在博客上发表了这篇文章here。但这是后代的代码:

with cte as (
    select * from (values
        ('Name'        ),
        ('StandardCost'),
        ('ListPrice'   )
    ) as x(col)
)
, column_ordinals AS (
    select sys.fn_cdc_get_column_ordinal('Production_Product', col) as [ordinal]
    from cte
)
SELECT *
FROM cdc.[fn_cdc_get_net_changes_Production_Product](
    sys.fn_cdc_get_min_lsn('Production_Product'), 
    sys.fn_cdc_get_max_lsn()
    , 'all with mask'
) AS fcgacpp
WHERE [__$operation] = 4 --after update
    AND 1 = ANY (
        select [sys].[fn_cdc_is_bit_set]([ordinal], [__$update_mask])
        from [column_ordinals]
    );

基本上,如果在__ $ update_mask位掩码中表示Name,StandardCost或ListPrice中的任何一个,则从CDC数据返回该行。我同意ANYALL并不经常使用,但是当你需要其中一个时,它们就很方便!

答案 1 :(得分:0)

是。它们用于微软认证考试中,用于琐碎追求式主题的问题,除了展示所有功能以及使考试更加困难之外,这些主题实际上并没有被广泛使用。也许作为一个利润动机,通过提高失败率从考生那里获得更多的钱。

除此之外,他们并没有太多使用。