ssms字符串模糊处理

gtlvzcf8  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(260)

我需要创建一个脚本来模糊一些数据。这个字符串很长,我只需要把它的一些部分弄模糊。
表中的记录类似于:

<?xml version="1.0" encoding="UTF-8"?><CONTRACT><IBC IBC_REF="f45f1231234ae5ac2easdasdfde5dfd" IBC_TYPE="I" TELEPHONE_1="1111111" TELEPHONE_2="11111111" MOBILE_PHONE="11111111" E_MAIL="asdasdasd@hotmail.com" SOLICITATION_MAIL="0" ARREARS_MAIL="1" MAIL_REDIRECTED="0" TITLE="Mrs" SURNAME_REGISTERED_NAME="Assadasd"

它需要变成这样:

<?xml version="1.0" encoding="UTF-8"?><CONTRACT><IBC IBC_REF="f45f1231234ae5ac2easdasdfde5dfd" IBC_TYPE="I" TELEPHONE_1="Telephone-1" TELEPHONE_2="Telephone-2" MOBILE_PHONE="MobilePhone" E_MAIL="email-1" SOLICITATION_MAIL="0" ARREARS_MAIL="1" MAIL_REDIRECTED="0" TITLE="Mrs" SURNAME_REGISTERED_NAME="Surname"

如何通过保存其他单词来更新表中的所有行并只更改部分字符串?

qltillow

qltillow1#

看起来您正在使用xml字符串,所以我建议您使用SQLServerXML功能。举个简单的例子:

DECLARE @input NVARCHAR(4000) = '<?xml version="1.0" encoding="UTF-8"?><CONTRACT><IBC IBC_REF="f45f1231234ae5ac2easdasdfde5dfd" IBC_TYPE="I" TELEPHONE_1="1111111" TELEPHONE_2="11111111" MOBILE_PHONE="11111111" E_MAIL="asdasdasd@hotmail.com" SOLICITATION_MAIL="0" ARREARS_MAIL="1" MAIL_REDIRECTED="0" TITLE="Mrs" SURNAME_REGISTERED_NAME="Assadasd" /></CONTRACT>';
DECLARE @x xml = CONVERT(xml, REPLACE(@input,'encoding="UTF-8"','encoding="UTF-16"'));

SELECT @x.value('(/CONTRACT/IBC/@TELEPHONE_1)[1]', 'nvarchar(100)');

DECLARE @y xml = @x

SET @y.modify('replace value of (/CONTRACT/IBC/@TELEPHONE_1)[1] with "TELEPHONE_1"');
SELECT @y.value('(/CONTRACT/IBC/@TELEPHONE_1)[1]', 'nvarchar(100)');
SELECT @y

DECLARE @output NVARCHAR(4000) = '<?xml version="1.0" encoding="UTF-8"?>' + CONVERT(NVARCHAR(4000), @y)
SELECT @output

相关问题