Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在句子中查找特定字符串并在sql中删除该字符串_C#_Sql - Fatal编程技术网

C# 如何在句子中查找特定字符串并在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相同。这个数字

我必须从存储在SQL数据库中的句子中删除特定值。句子如下:

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是如何相关的?