Как найти SQL текст столбца таблицы и выбрать строку или вернуть наибольшее число - PullRequest
2 голосов
/ 16 июня 2020

У меня есть столбец в таблице SQL, который выглядит следующим образом. В нем есть информация о возрастной группе, но она довольно случайна:

Table1
Text
Males 40Y to 50Y
Mixed Sex 35 to 40
21Y only
Year7 boys
Year10 girls
Grade1
Random Text

У меня есть другая таблица, в которой классифицируются некоторые данные возрастной группы:

Lookup Table
Keywords      Age
Year7          13
Year10         16
Grade1         6

My end цель - добавить столбец к исходной таблице Возраст. Я хотел бы сначала найти Lookup Table, а затем, если совпадения нет, найти наибольшее число в строке. Если после этого совпадений нет, я хотел бы вернуть число 1, чтобы моя конечная таблица выглядела так:

Text                    Age
Males 40Y to 50Y         50
Mixed Sex 35 to 40       40
21Y only                 21
Year7 boys               13
Year10 girls             16
Grade1                   6
Random Text              1

Это не в моих силах на данный момент, поэтому ищу помощь, чтобы решить эту проблему, поэтому любая помощь будет оценена. Большое спасибо !!

1 Ответ

2 голосов
/ 16 июня 2020

Основываясь на ваших данных образца, вы можете использовать logi c следующим образом:

select t.text, coalesce(l.age, x.num, 1) as age
from t cross apply
     (select max(try_convert(int, replace(s.value, 'Y', ''))) as num
      from string_split(t.text, ' ') s
     ) x left join
     lookup l
     on t.text like concat('%', l.keyword, '%');

Обратите внимание, что это предполагает, что наибольшее значение либо само по себе число, либо за ним следует «Y» - который работает для ваших образцов данных.

Здесь - скрипт db <>.

...