带有if逻辑的sql查询

时间:2018-08-01 19:33:50

标签: sql sql-server sql-server-2014

我有一个表,其中的column(info)之一包含以下类型的信息,我想运行一个查询,检查所有记录,如果它找到“匹配的数据”值,然后删除该数据。

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

2 个答案:

答案 0 :(得分:1)

如果您的Json格式字符串是固定的。您可以将CHARINDEXSUBSTRING一起使用  和REPLACE方法

  1. 通过""matched data""方法将CHARINDEX字符串作为起始索引
  2. 使用CHARINDEX来获取}}来作为结束索引。
  3. SUBSTRING包含""matched data""键值数据。
  4. 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

答案 1 :(得分:0)

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);