sql >> Database >  >> RDS >> Mysql

MySQL - woorden vinden die het gezochte trefwoord omringen

Ik heb een toneelstuk gehad en ik kan je een halve oplossing geven in pure mysql.

U kunt de tekenreeks aan weerszijden van het woord dat u zoekt, gebruiken. Weet gewoon niet hoe je het woord moet krijgen in plaats van de hele substring. Hopelijk is het nuttig.

select case when (select w.t regexp concat('[[:<:]]', w.v)) = 1 
    then substr(w.t, 1, locate(w.v, w.t)-1) else null end as 'left_word',
       w.v as word,
       case when (select w.t regexp concat(w.v, '[[:>:]]')) = 1 
    then substr(w.t, locate(w.v, w.t)+length(w.v)) else null end as 'right_word'
    from (
        select "Lorem ipsum dolor sit amet consectetur adipiscing elit." as t, "amet" as v
    ) as w;

select case when (select w.t regexp concat('[[:<:]]', w.v)) = 1 
    then substr(w.t, 1, locate(w.v, w.t)-1) else null end as 'left_word',
       w.v as word,
       case when (select w.t regexp concat(w.v, '[[:>:]]')) = 1 
    then substr(w.t, locate(w.v, w.t)+length(w.v)) else null end as 'right_word'
    from (
        select "Lorem ipsum dolor sit amet consectetur adipiscing elit." as t, "elit." as v
    ) as w;



  1. Charlotte SQL Server-gebruikersgroep:langzame zoekopdrachten oplossen. Snel.

  2. MIN en MAX geaggregeerde functies in SQL Server

  3. Webinar:Bankieren op Postgres - Overwegingen bij financiële toepassingen [follow-up]

  4. MySQL-limiet van aflopende volgorde