将任何包含“00”或“0”的字符串替换为 00 或 0(在 SQL 服务器中处理双引号)

Replacing any String that contains "00" or "0" with 00 or 0 (Handling double quotes in SQL Server)

我在专栏中的输出目前有:

Pill Type
"00" Vegetarian Capsules : (
"0" Vegetarian Capsules : (
"0" Gelatin Capsules : (
"DINO" : (

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

Pill Type
00
0
0
DINO

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

现在有双引号,太多的短语需要很长时间才能写出来替换每个,而且只需要双引号中包含的内容让我卡住了,我不太明白解决方案。

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

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 表达式。