Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 Server中使用掩蔽正则表达式发送查询?_Sql_Sql Server - Fatal编程技术网

如何在SQL Server中使用掩蔽正则表达式发送查询?

如何在SQL Server中使用掩蔽正则表达式发送查询?,sql,sql-server,Sql,Sql Server,假设我有一个表Person。该表包含名称和年龄列。我需要一个查询,它将使用replace模式动态更改列 例如: select * from person [whatever] REPLACE(name, 'a', 'XXXXX') 我期望的结果是这样的: XXXXlex martinez 有办法吗?如果要将前四个字符更改为'X',请使用STUFF(): 如果要隐藏“名称”,请使用视图: create view v_person as select stuff(name, 1

假设我有一个表
Person
。该表包含名称和年龄列。我需要一个查询,它将使用replace模式动态更改列

例如:

select * 
from person [whatever] REPLACE(name, 'a', 'XXXXX')
我期望的结果是这样的:

XXXXlex     martinez

有办法吗?

如果要将前四个字符更改为
'X'
,请使用
STUFF()

如果要隐藏“名称”,请使用视图:

create view v_person as
    select stuff(name, 1, 4, 'XXXX') as name, age
    from person;

使用该视图的用户将只看到修改后的名称。

选择替换(名称,'a','XXXXX'),年龄来自员工。我不能那样做。它们必须拆分。查询不必
从person
中选择*。它可以是``从person中选择name,age``您认为“使用替换模式动态更改列”是什么意思<代码>替换将一个字符串替换为另一个字符串。因此,
REPLACE('A character string','A','XXXXX')
将返回
'XXXXX chxxxxxrxxxxx character string'
。数据屏蔽会很糟糕。您想用x替换前4位。@Larnu是的,但模式不重要。我想知道有没有适合我的函数。我想把“name”列改为替换(name,'a','XXXXX')。但用户将发送类似于
从员工中选择姓名并替换(姓名,'a','XXXXX')的查询。
这不是SQL的工作方式,@bilinmeyenkarakter。不能用其他表达式替换查询本身的一部分;如果要使用该表达式,需要在SQL语句中定义它。您不能传递
name
并期望它被替换为
REPLACE(name'a',XXXXX')
。Gordon的第二个建议,使用
视图
在这里似乎是一个很好的选择。而且,正如我上面所说,@bilinmeyenkarakter,
替换(名称,'a','XXXXX')
是一个可怕的掩蔽过程。例如,对于Gordon的名字,他们的名字仍然是
'Gordon Linoff'
,即使在应用了你的“掩蔽”之后。@Gordon,我相信你想要
东西(名字,1,4,'XXXX')
STUFF
在这里只会用一个
X
替换字符,而不是4个。@Larnu模式以便于查看。我在胡思乱想。那么,有没有一种方法可以让你喜欢上禁栏呢?当用户写入
selectname from person
其意志被禁止或
select name,年龄from person
时,此查询答案中的年龄仅为年龄?
create view v_person as
    select stuff(name, 1, 4, 'XXXX') as name, age
    from person;