C# 如何在句子中查找特定字符串并在sql中删除该字符串
我必须从存储在SQL数据库中的句子中删除特定值。句子如下:C# 如何在句子中查找特定字符串并在sql中删除该字符串,c#,sql,C#,Sql,我必须从存储在SQL数据库中的句子中删除特定值。句子如下: 1 Payments:ihj - CHENNAI-HIRE:54005-TN69AZ54008,4021-TN69AZ54005 2 Payments:ihj - CHENNAI-HIRE:54004-TN69AZ54008,4021-TN69AZ54005,54005-TN69AZ54008 在上面的句子中,54004是我将作为参数传递给SQL的数字。这是我想从此行中删除的编号,但此行中的编号与TN69AZ54005相同。这个数字
1 Payments:ihj - CHENNAI-HIRE:54005-TN69AZ54008,4021-TN69AZ54005
2 Payments:ihj - CHENNAI-HIRE:54004-TN69AZ54008,4021-TN69AZ54005,54005-TN69AZ54008
在上面的句子中,54004是我将作为参数传递给SQL的数字。这是我想从此行中删除的编号,但此行中的编号与TN69AZ54005相同。这个数字不应该被打乱,在另一次付款中,我们在另一个地方有相同的金额。有人能帮忙吗
我尝试了这个sql查询
declare @text int=4019
select SUBSTRING(notes,CHARINDEX(cast(@text as varchar),notes),
len(notes)-CHARINDEX(',',notes)+1)
from Accounts.TransactionNotes
where TransactionID=1978
如果我使用这个查询,它将影响包括这一行TN69AZ54005我可以看到您在问题中包含了一个C标记。那么最简单的方法可能就是使用你的应用程序选择所有必要的行,然后遍历它们,并使用PHP preg_replace equivalent和更新SQL行等工具根据需要更改字符串 我相信这是最简单的方法,不是真正的SQL解决方案,但仍然
update <table> set notes = replace(notes, 'HIRE:'+ str(<inputparam>),'HIRE:') where transactionid=<transactionid>
update <table> set notes = replace(notes, ','+ str(<inputparam>),',') where transactionid=<transactionid>
您需要找到一些东西作为inputpram值的前缀,就像上面的示例中我使用的HIRE:或逗号一样
另一种方法是使用REGEXP查找整个单词,然后一个查询就足够了。但我还没试过
这里的问题不是查询,而是设计查询的人
数据库
我不确定这是不是你想要的,但我会通过密码的
-- for test create #temp
SELECT
A.DATA
INTO #Temp
FROM
(
SELECT 'Payments:ihj - CHENNAI-HIRE:54005-TN69AZ54008,4021-TN69AZ54005' AS DATA
UNION
SELECT 'Payments:ihj - CHENNAI-HIRE:54004-TN69AZ54008,4021-TN69AZ54005,54005-TN69AZ54008' AS DATA
) AS A
GO
-- this you want?
UPDATE #Temp
SET DATA = REPLACE(DATA,'54004','')
GO
-- select changed data
SELECT * FROM #Temp
如果你所有的句子大致相同,你可以搜索:54005并替换为:-这样TN69AZ54005将保持不变,但条目不同。在第二次付款中,你可以看到这一点。在这种情况下,也可以搜索,54005。你基本上希望在某个地方替换某些子字符串,而不是在某个地方。您应该准确明确地指定要替换它的位置和不替换它的位置。没有这个规范,就不可能实现它。顺便问一下,你真的认为在db中存储分隔值是个好主意吗?Btw2 54004在任何方面都不是TN69AZ54005的一部分。我想从句子中删除这个字符串。我刚刚通过了这个例子。它是sp工作的一部分。所以c代码不能处理那个c标记,SQL标记,PHP是如何相关的?