SQL SELECT everything after a certain character

前端 未结 6 2216
广开言路
广开言路 2021-01-31 16:02

I need to extract everything after the last \'=\' (http://www.domain.com?query=blablabla - > blablabla) but this query returns the entire strings. Where did I go wrong in here:<

6条回答
  •  忘掉有多难
    2021-01-31 16:21

    I've been working on something similar and after a few tries and fails came up with this:

    Example: STRING-TO-TEST-ON = 'ab,cd,ef,gh'

    I wanted to extract everything after the last occurrence of "," (comma) from the string... resulting in "gh".

    My query is:

    SELECT SUBSTR('ab,cd,ef,gh' FROM (LENGTH('ab,cd,ef,gh') - (LOCATE(",",REVERSE('ab,cd,ef,gh'))-1)+1)) AS `wantedString`
    

    Now let me try and explain what I did ...

    1. I had to find the position of the last "," from the string and to calculate the wantedString length, using LOCATE(",",REVERSE('ab,cd,ef,gh'))-1 by reversing the initial string I actually had to find the first occurrence of the "," in the string ... which wasn't hard to do ... and then -1 to actually find the string length without the ",".

    2. calculate the position of my wantedString by subtracting the string length I've calculated at 1st step from the initial string length:

      LENGTH('ab,cd,ef,gh') - (LOCATE(",",REVERSE('ab,cd,ef,gh'))-1)+1

    I have (+1) because I actually need the string position after the last "," .. and not containing the ",". Hope it makes sense.

    1. all it remain to do is running a SUBSTR on my initial string FROM the calculated position.

    I haven't tested the query on large strings so I do not know how slow it is. So if someone actually tests it on a large string I would very happy to know the results.

提交回复
热议问题