带if逻辑的sql查询
我有一个表,其中一列(info)包含以下类型的信息,我想运行一个查询,检查所有记录,如果找到“匹配数据”值,则删除数据带if逻辑的sql查询,sql,sql-server,sql-server-2014,Sql,Sql Server,Sql Server 2014,我有一个表,其中一列(info)包含以下类型的信息,我想运行一个查询,检查所有记录,如果找到“匹配数据”值,则删除数据 Current value "{""value"":{""Volume ID"":""12345"",""matched data"":""eJzBFPafhF1xu0JdwH""}}" Expected value "{""value"":{""Volume ID"":""12345"",""matched data"":"" ""}}" idk您到底需要什么,但是如果
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
格式字符串是固定的。您可以将CHARINDEX
与子字符串一起使用
和替换方法
通过CHARINDEX
方法获取要作为起始索引的“匹配数据”
字符串
使用CHARINDEX
获取}
获取作为结束索引的索引
子字符串
获取包含“匹配数据”
键值数据
将
替换为您期望的格式
最终使用替换以获得预期结果
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
您的数据库管理系统是什么?您的sql在哪里?Microsoft sql server 2014,表名是DataCollections,所以您的colnum数据是JSON
?是它的JSONvalue@D-Shih这可能吗?谢谢,我是否应该尝试按“匹配数据”的情况从数据收集顺序中选择信息现在不确定如何跳转到下一条语句,使值为null?@gary我有点难以理解您的确切意思。您正在询问值为null时的情况?如果您看到我的当前值和预期值。我需要运行一个查询,该查询应查找“匹配的数据”并删除下一个“匹配数据”之间的所有值:“我想删除这些代码中的所有数据”“非常感谢。我向您致敬,感谢您聪明的方法和快速的理解帮助我解决了问题。