Есть ли в ms-access sql -query функция, с помощью которой можно извлечь определенную строку? - PullRequest
0 голосов
/ 19 февраля 2020

Мне было интересно, есть ли в MS-Access функция SQL -Query, с помощью которой можно извлечь заданную строку из каждой ячейки столбца (аналогично substring(), но со строкой в ​​качестве критерия).

Например, я хотел бы извлечь ключевые слова SUN и FUN из следующего столбца (с именем Lyrics)

Lyrics

AeSUN9SL
Pla4FUNP
L2wqSUNop
ASUNfdNNK
7dssFUN9SL

, чтобы я У меня осталось только: Текст

SUN
FUN
SUN
SUN
FUN

в столбце. Поскольку длина, а также количество «неиспользуемых» символов до и после ключевого слова string отличаются, я не могу использовать left() и right().

Есть ли другой способ решения этой проблемы?

Ответы [ 2 ]

1 голос
/ 19 февраля 2020

Вы можете использовать функцию подстроки регулярного выражения https://www.techonthenet.com/oracle/functions/regexp_substr.php

select regexp_substr(Lyrics,'(SUN|FUN)', 1,1, 'i') from yourtablenamehere;
0 голосов
/ 19 февраля 2020

Вы можете использовать case и like:

select (case when lyrics like '%SUN%' then 'SUN'
             when lyrics like '%FUN%' then 'FUN'
        end)

В MS Access (который не был оригинальным тегом):

select iif(lyrics like '*SUN*', 'SUN'
           iif(lyrics like '*FUN*', 'FUN', NULL)
          )     

Вы также можете включить это в UPDATE:

update t
    set lyrics = iif(lyrics like '*SUN*', 'SUN'
                     iif(lyrics like '*FUN*', 'FUN', NULL)
                    ) ;    
...