如何使用tSQL匹配并删除两个字符串中任何一个之后的所有内容?

如何使用tSQL匹配并删除两个字符串中任何一个之后的所有内容?,tsql,Tsql,如何使用tSQL查找两个字符串中的一个,如果它们存在,则返回查找字符串之前的所有内容 在ETL过程中,我们如何从源中获取列,识别字符串?uniquecode=或/uniquecode=,从而在sink列的SELECT语句中删除这些字符串以及它们之后的所有内容?i、 e.匹配以下预期结果 在上,我获得了一个解决方案,该解决方案成功地找到了?uniquecode=。我只需要找到一种方法来修改它,同时查找/uniquecode= SELECT CASE WHEN CHARINDEX('?unique

如何使用tSQL查找两个字符串中的一个,如果它们存在,则返回查找字符串之前的所有内容

在ETL过程中,我们如何从源中获取列,识别字符串?uniquecode=/uniquecode=,从而在sink列的SELECT语句中删除这些字符串以及它们之后的所有内容?i、 e.匹配以下预期结果

在上,我获得了一个解决方案,该解决方案成功地找到了?uniquecode=。我只需要找到一种方法来修改它,同时查找/uniquecode=

SELECT
CASE WHEN CHARINDEX('?uniquecode=', SourcePageURL) > 0
     THEN SUBSTRING(SourcePageURL,
                    1,
                    CHARINDEX('?uniquecode=', SourcePageURL) - 1)
     ELSE SourcePageURL END AS new_source
FROM sql_test;

您可以按如下方式修改当前查询:

SELECT
    CASE WHEN SourcePageURL LIKE '%?uniquecode=%'
         THEN SUBSTRING(SourcePageURL,
                        1,
                        CHARINDEX('?uniquecode=', SourcePageURL) - 1)
         WHEN SourcePageURL LIKE '%/uniquecode%'
         THEN SUBSTRING(SourcePageURL,
                        1,
                        CHARINDEX('uniquecode=', SourcePageURL) - 1)
         ELSE SourcePageURL END AS new_source
FROM sql_test;


您可以按如下方式修改当前查询:

SELECT
    CASE WHEN SourcePageURL LIKE '%?uniquecode=%'
         THEN SUBSTRING(SourcePageURL,
                        1,
                        CHARINDEX('?uniquecode=', SourcePageURL) - 1)
         WHEN SourcePageURL LIKE '%/uniquecode%'
         THEN SUBSTRING(SourcePageURL,
                        1,
                        CHARINDEX('uniquecode=', SourcePageURL) - 1)
         ELSE SourcePageURL END AS new_source
FROM sql_test;


嗨,菲尔,我在下面写了一个答案。正如你所看到的,这个查询与你的第一个问题有很大的不同,这就是为什么仅仅给出一个新的答案不那么有效。如您所见,该查询与您的第一个问题大不相同,这就是为什么仅仅给出一个新的答案不太好。再次感谢@TimBiegeleisen,这非常有效,非常感谢!再次感谢@TimBiegeleisen,非常感谢!