使用sqlcmd和setvar动态显示隐藏列



当从供应商的EHR系统生成数据提取时,我切换PHI的显示。

到目前为止,我一直在脚本文件中手动启用和禁用这些字段:

-- PHI enabled
SELECT  MRN
        --,HASHBYTES('SHA2_256',MRN) MRN_HASH
...
GO
-- PHI disabled
SELECT  -- MRN
        ,HASHBYTES('SHA2_256',MRN) MRN_HASH
...
GO

是否有一种方法可以动态地做到这一点?

 --
 -- disable this variable when running `SQLCMD` from command line
 -- PS> sqlcmd -E -S server -d database -i .script.sql -v hide_phi=1
 --
:setvar hide_phi 0
:out c:usersxdesktoppatients.csv
SELECT
       <if $(hide_phi)=0 then hide MRN>
       <if $(hide_phi)=1 then hide MRN_HASH>
...
GO

SQLCMD接受变量。您可以简单地将变量传递给. sql文件,并在文件中对变量值进行条件检查。您可以使用CASE语句来检查变量的值,并返回适当的值。

伪示例查询:

select "MRN" = case 
   when '$(hide_phi)' = '1' then HASHBYTES('SHA2_256', MRN) 
   else MRN
END
...
GO

或者

select "MRN" = case '$(hide_phi)'
   when '1' then HASHBYTES('SHA2_256', MRN) 
   else MRN
END

更多信息:https://msdn.microsoft.com/en-us/library/ms188714.aspx

最新更新