Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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,搜索并替换列中的特定字符(切换“Z”和“Y”)?_Sql_Postgresql - Fatal编程技术网

SQL,搜索并替换列中的特定字符(切换“Z”和“Y”)?

SQL,搜索并替换列中的特定字符(切换“Z”和“Y”)?,sql,postgresql,Sql,Postgresql,我有一个序列号为FFMZR62TYY67的列SN 是否有SQL语句替换所有Y到Z和所有Z到Y=FFMYR62TZ67 谢谢你帮助我 这应该有效: 第一次将Y替换为1,将Z替换为2 再次用Z替换1,用Y替换2 select replace(replace(replace(replace(SN,'Y','1'),'Z','2'),'1','Z'),'2','Y') select replace(replace(replace(replace(SN,'Y','$1'),'Z','%1'),'$1',

我有一个序列号为FFMZR62TYY67的列SN

是否有SQL语句替换所有Y到Z和所有Z到Y=FFMYR62TZ67

谢谢你帮助我

这应该有效: 第一次将Y替换为1,将Z替换为2 再次用Z替换1,用Y替换2

select replace(replace(replace(replace(SN,'Y','1'),'Z','2'),'1','Z'),'2','Y')

select replace(replace(replace(replace(SN,'Y','$1'),'Z','%1'),'$1','Z'),'%1','Y')
这应该起作用: 第一次将Y替换为1,将Z替换为2 再次用Z替换1,用Y替换2

select replace(replace(replace(replace(SN,'Y','1'),'Z','2'),'1','Z'),'2','Y')

select replace(replace(replace(replace(SN,'Y','$1'),'Z','%1'),'$1','Z'),'%1','Y')
这份声明就是你要找的。 由于要交换字母,因此需要先用虚拟字母替换一个字母。 像这样未经测试的事情:

UPDATE myTable t
SET SN = REPLACE(
           REPLACE(
             REPLACE(
               t.SN,
               'Y',
               '?'),
             'Z',
             'Y'),
           '?',
           'Z')
??不应在原始字符串中

该语句就是您要查找的语句。
select replace(replace((replace('FFMZR62TYY67','Z','!')),'Y','Z'),'!','Y')
由于要交换字母,因此需要先用虚拟字母替换一个字母。 像这样未经测试的事情:

UPDATE myTable t
SET SN = REPLACE(
           REPLACE(
             REPLACE(
               t.SN,
               'Y',
               '?'),
             'Z',
             'Y'),
           '?',
           'Z')

??不应在原始字符串中

Postgresql有一个函数translate用于此类内容:

select replace(replace((replace('FFMZR62TYY67','Z','!')),'Y','Z'),'!','Y')
select translate(SN, 'YZ', 'ZY') from my_table;
第二个参数中的每个字符都将替换为第三个参数中的相应字符


下面是完整的文档:

Postgresql有一个函数,用于翻译这类内容:

select translate(SN, 'YZ', 'ZY') from my_table;
第二个参数中的每个字符都将替换为第三个参数中的相应字符

这是完整的文档:

您正在寻找翻译功能

declare @Input nvarchar(20) = N'FFMYR62TZZ67';
declare @Output nvarchar(20) = translate(@Input, N'YZ', N'ZY');
select [@Input]=@Input, [@Output]=@Output;
导致:

@Input               @Output
-------------------- --------------------
FFMYR62TZZ67         FFMZR62TYY67

您正在寻找翻译功能

declare @Input nvarchar(20) = N'FFMYR62TZZ67';
declare @Output nvarchar(20) = translate(@Input, N'YZ', N'ZY');
select [@Input]=@Input, [@Output]=@Output;
导致:

@Input               @Output
-------------------- --------------------
FFMYR62TZZ67         FFMZR62TYY67


但字符串中可能有1或2,不应替换。也许它适用于某些特殊字符§§$%!Thankso替换为一些特殊字符。因此,该语句应类似于更新表集SN=replacesn、'Y'、'$'、'Z'、'€'、'$'、'Z'、'€'、'Y'?这行吗?但字符串中可能有1或2,不应替换。也许它适用于某些特殊字符§§$%!Thankso替换为一些特殊字符。因此,该语句应类似于更新表集SN=replacesn、'Y'、'$'、'Z'、'€'、'$'、'Z'、'€'、'Y'?这行得通吗?更新表集SN=translateSN,'YZ','ZY';很好用!谢谢更新表集SN=translateSN,'YZ','ZY';很好用!谢谢