在Sql中查找两个指定字符之间的字符串

时间:2014-06-26 11:01:22

标签: c# asp.net sql sql-server sql-server-2008

我在我的数据库中有一个LinkedIn链接这里我必须检查我的linkedIn ID,其中链接的链接被插入两次或更多次。 例如:https://www.linkedin.com/profile/view?id=246925795&authType=name&authToken=sygl&trk=prof-sb-browse_map-name

我必须在数据库中检查id 如果id重复两次或多次,则必须删除它,并且只能留下一个。 ID = 246925795

请有人帮帮我

2 个答案:

答案 0 :(得分:1)

WITH Ids AS (
    SELECT Id,
           SUBSTRING(LinkedInLink, IdStart, IdEnd - IdStart) AS LinkedInId
    FROM table
         CROSS APPLY (
             SELECT CHARINDEX('id=', LinkedInLink) AS IdStart
         ) AS CA1
         CROSS APPLY (
             SELECT CHARINDEX('&', LinkedInLink, IdStart) AS IdEnd
         ) AS CA2
)
,Duplicates AS (
    SELECT LinkedInId
          ,MAX(id) AS LastDuplicateId
    FROM Ids
    GROUP BY LinkedInId
    HAVING COUNT(*) > 1
)
DELETE FROM Table
WHERE Id IN (SELECT LastDuplicateId FROM Duplicates)

答案 1 :(得分:0)

最好使用正则表达式来执行此类搜索操作。 您可以创建一个Utility类,它将在C#或VB.Net中执行search + replace,然后在SQl Server中导入该类(DLL)。在SQL查询中,您可以将其用作函数。

参考:Link