sql 使用 if 逻辑查询

sql query with if logic

我 table 其中一列(信息)包含以下类型的信息,我想 运行 查询检查所有记录,如果它找到“"matched data"" 值然后删除数据。

Current value 
"{""value"":{""Volume ID"":""12345"",""matched data"":""eJzBFPafhF1xu0JdwH""}}"
Expected value 
"{""value"":{""Volume ID"":""12345"",""matched data"":"" ""}}"

idk 你到底需要什么,但是如果你想找出sql中if语句的解决方案,你的方法是用例。

示例:

CASE expression
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
   ...
    WHEN conditionN THEN resultN
    ELSE result
END

完整查询示例:

SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END);

如果您的 Json 格式字符串是固定的。你可以使用 CHARINDEXSUBSTRINGREPLACE 方法

  1. 通过CHARINDEX方法获取""matched data""字符串作为起始索引
  2. 使用CHARINDEX得到}}得到结束索引。
  3. SUBSTRING 获取包含 ""matched data"" 键值数据。
  4. REPLACE 为您期望的格式。

最终使用 Replace 得到预期结果

TestDLL

CREATE TABLE T(
   Col1 VARCHAR(1000)
);

INSERT INTO T VALUES ('"{""value"":{""Volume ID"":""12345"",""matched data"":""eJzBFPafhF1xu0JdwH""}}"');
INSERT INTO T VALUES ('"{""value"":{""Volume ID"":""12345"",""matched data"":""test1213""}}"');

查询

SELECT REPLACE(Col1,SUBSTRING(Col1,CHARINDEX('""matched data"":', Col1) ,CHARINDEX('}}', Col1)  - CHARINDEX('""matched data"":', Col1)),'""matched data"":"" ""')
FROM T

sqlfiddle