我正在使用sql Server 2008.
这是我在执行select时来自表中列的数据:
column1 384844033434 743423547878 111224678885
我想要这样的输出:
column1 384xxxxxx434 743xxxxxx878 111xxxxxx885
我怎样才能做到这一点?
解决方法
您必须使用视图,并拒绝所有用户对基础表的SELECT访问权限.
你的观点看起来像
SELECT SUBSTRING(x.SecurityNumber,1,3) + 'xxxxx' + SUBSTRING(x.SecurityNumber,LEN(x.SecurityNumber) - 2,LEN(x.SecurityNumber)) AS column1 FROM underlyingTable x
然后,您可以授予您的用户SELECT访问此视图的权限,并以您描述的方式屏蔽掉.
如果您希望客户端软件能够在此表中插入或更新数据,则可以使用INSTEAD OF INSERT或INSTEAD OF UPDATE触发器来更新基表.