Как извлечь слово из середины ячейки в MySql? - PullRequest
1 голос
/ 04 октября 2019

Я хочу извлечь слово с версией в другой новой таблице, например: "фрукты 2.0" из второй таблицы, из каждой ячейки. Как я могу это сделать? Пример базы данных ниже:

select * from mytable where mytab like'%fruit%'.    

 User   MyTab
    1   ["{myfruit":"apple","store":"mystore","username"andy",\\; fruit 2.0 \\,"mysstore is null=false":"133-aascd-ee54-678v"}"]
    2   ["{myfruit":"apple","store":"mystore","username"andy",\\; fruit 1.2 \\,"mysstore is null=false":"133-aascd-ee54-678v"}"]
    3   ["{myfruit":"apple&banana","store":"mystore","username"andy",\\; fruit 3.0 \\,"mysstore is null=false":"133-aascd-ee54-678v"}"]
    4   ["{myfruit":"apple&banana&pineaple","store":"mystore","username"andy",\\;fruit 1.0 \\,"mysstore is null=false":"133-aascd-ee54-678vsadsaafvvrrrv"}"]

Окончательный результат, который я хочу получить:

User    MyTab2
   1    fruit 2.0
   2    fruit 1.2
   3    fruit 3.0
   4    fruit 1.0

Некоторые свойства столбца:

Data Type   varchar
System Type varchar
Length  8000
Collation   SQL_Latin1_General_CP1_CI_AS
Numeric Precision   0
Numeric Scale   0
Is sparse   FALSE
Is Column Set   FALSE
Statistical Semantics   FALSE
Not for Replication FALSE
ANSI Padding Status TRUE
Full Text   FALSE

1 Ответ

0 голосов
/ 04 октября 2019

Я публикую здесь решение MSSQL. Это очень надумано (и может быть неэффективно), и я чувствую, что вы должны извлечь столбцы из базы данных, а затем попытаться извлечь текст с помощью регулярных выражений.

    SELECT id, SUBSTRING(
      mytab, 
      PATINDEX('%fruit [0-9\.]%', mytab), 
      PATINDEX('%\\,%', mytab)-PATINDEX('%fruit [0-9\.]%', mytab) FROM mytable;

В основном то, что я делаю здесь, это

  • Пусть X = All 'fruit' occurences followed by a floating number (version) найдено с использованием PATINDEX
  • Let Y = Позиция \\,, которая является последовательностью сразу после строки в выборках данныхвы поделились
  • Я использую функцию SUBSTRING MSSQL для извлечения подстроки из позиции SUBSTRING(mytab, X, Y-X)

Рабочая SQL Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...