TSQL DecryptbyKey子查询

时间:2016-04-23 07:18:27

标签: sql sql-server tsql encryption subquery

我在我正在使用的表格上实施TSQL加密。我的SQL太强了,我目前有这个查询:

webview.loadUrl("file:///android_asset/mypicture.jpg");

这很有效。但是,我已经删除了“薪水”。成员表中的列,现在数据加密存储为名为' Salary_Encrypted'。

如何执行子查询     上述查询中的SELECT a.salary_group, Count(*) as Count FROM (SELECT (CASE WHEN Salary BETWEEN 0 and 10000 then '000-010k' WHEN Salary BETWEEN 10001 and 20000 then '010-020k' ELSE 'Outstanding' END) AS 'salary_group' FROM Members)a GROUP BY a.salary_group;

谢谢!

2 个答案:

答案 0 :(得分:0)

试试这个

SELECT 
        a.salary_group, 
        Count(*) as Count
    FROM
        (SELECT
            (CASE
                WHEN CONVERT(int, DecryptByKey(Salary_Encrypted)) BETWEEN 0 and 10000 then '000-010k'
                WHEN CONVERT(int, DecryptByKey(Salary_Encrypted)) BETWEEN 10001 and 20000 then '010-020k'
                ELSE 'Outstanding'
            END) AS 'salary_group'
        FROM 
            Members)a
    GROUP BY a.salary_group;

答案 1 :(得分:0)

经过一些反复试验后,我最终使用了:

SELECT 
    a.salary_group, 
    Count(*) as Count
FROM
    (SELECT
        (CASE
            WHEN b.Salary BETWEEN 0 and 10000 then '000-010k'
            WHEN b.Salary BETWEEN 10001 and 20000 then '010-020k'
            ELSE 'Outstanding'
        END) AS 'salary_group'
        FROM 
            (SELECT 
                Convert(int, dbo.Decrypt(Salary_Encrypted)) AS 'Salary' 
            FROM 
                Members)b
        )a
GROUP BY a.salary_group";

我认为这至少比转换每一行更合理,因为我的实际案例陈述有更多案例。