【问题标题】:Extract everything in between & -- & from a column in a table从表中的列中提取 & -- & 之间的所有内容
【发布时间】:2016-11-29 18:40:23
【问题描述】:

我有表格中列的值,我需要精确字符串的某些部分

 baf93b64-c255-4dda-b9dc-3f7438b49335-mkttrg&utm_source=bing&utm_medium=cpc&utm_campaign=MO+-+Payday&utm_term=payday+loan&utm_content=Payday+Loans+(Phrase)

现在我必须从第一个 & 中提取,即

utm-source = bing
utm-medium  = cpc 
utc_campaign  = MO+Payday
utm_term = 'payday+loan'
utm_content = Payday+loans+(Phrase).

你能帮我用子字符串函数从提到的值列中提取这些部分吗?

提前致谢。

【问题讨论】:

    标签: sql-server substring sql-server-2014 charindex


    【解决方案1】:

    使用以charindex开头的子字符串,提取的字符数是字符串的长度减去开头和结尾两段的长度。您需要进行一些数据验证,以便 col 符合您的要求。

    substring(col, charindex('&', col) + 1, len(col) - charindex('&', reverse(col)) - charindex('&', col))
    

    测试代码:

    DECLARE @col nvarchar(100) = '12&12545643&euwpo';
    
    SELECT substring(@col, charindex('&', @col) + 1, len(@col) - charindex('&', reverse(@col)) - charindex('&', @col))
    

    【讨论】:

    • 它抛出一个错误..Msg 537, Level 16, State 3, Line 16 传递给 LEFT 或 SUBSTRING 函数的长度参数无效。
    • 这里绝对有足够的内容可以让您对如何继续进行深入了解。
    • @MisterPositive 谢谢。
    • 它适用于一个字符串,但我需要拉整个表。
    • @kris 然后你应该搜索“t-sql split string”这个词。网上有很多关于这个主题的资源。而且我认为标题有些误导。
    【解决方案2】:

    使用SplitString函数解决这个问题的主要方法。

    那就看你的评论了:

    在我在问题中提到的字符串中,它没有选择 最后一部分“utm_content=Payday+Loans+(Phrase)”,因为它没有 我猜是 & 在结尾!!

    使用以下代码:-

    SELECT top ((select count (*)  FROM dbo.SplitString('baf93b64-c255-4dda-b9dc-3f7438b49335-mkttrg&utm_source=bing&utm_medium=cpc&utm_campaign=MO+-+Payday&utm_term=payday+loan&utm_content=Payday+Loans+(Phrase)', '&')
    where item like '%=%' ) -1) item
    FROM dbo.SplitString('baf93b64-c255-4dda-b9dc-3f7438b49335-mkttrg&utm_source=bing&utm_medium=cpc&utm_campaign=MO+-+Payday&utm_term=payday+loan&utm_content=Payday+Loans+(Phrase)', '&')
    where item like '%=%'
    

    结果:-

    【讨论】:

    • 它不工作。收到错误..Msg 208, Level 16, State 1, Line 26 Invalid object name 'dbo.SplitString'.
    • 转到我的回答中提到的链接并首先执行SplitString ...这是链接> aspsnippets.com/Articles/…
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2015-08-15
    相关资源
    最近更新 更多