首页 > 解决方案 > 用 00 或 0 替换任何包含“00”或“0”的字符串(在 SQL Server 中处理双引号)

问题描述

我在列中的输出当前有:

药丸类型
“00”素食胶囊:(
“0”素食胶囊:(
“0”明胶胶囊:(
“恐龙”:(

我需要只用双引号之间包含的内容替换整个字符串,这是我想要的结果:

药丸类型
00
0
0
恐龙

我是 SQL 的新手,之前会通过执行 CASE 语句甚至嵌套的 REPLACE() 语句来清理一些字符串

现在有双引号,太多的短语需要很长时间才能写出替换每个短语,并且只需要双引号中包含的内容让我陷入困境,我无法完全找到解决方案。

标签: sqlsql-serversubstring

解决方案


这是一个演示如何获得所需结果的脚本:

declare @tmp as table (s nvarchar(100) not null);
insert into @tmp values ('"00" Vegetarian Capsules : (');
insert into @tmp values ('"0" Vegetarian Capsules : (');
insert into @tmp values ('"0" Gelatin Capsules : (');
insert into @tmp values ('"DINO" : (');

select SUBSTRING(s, charindex('"', s) + 1, len(s) - charindex('"', reverse(s)) - charindex('"', s)) from @tmp;

但是,请注意,如果不存在双引号,则整个字符串都是结果。如果您需要解决这个问题,您可以使用 CASE 表达式。


推荐阅读