Как получить некоторую информацию из столбца с помощью SQL - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть эта таблица

enter image description here

и я хочу получить номер счета, сумму и дату в другую таблицу

Ответы [ 3 ]

0 голосов
/ 07 сентября 2018

вы можете использовать Regex в вашем запросе. Вы можете сослаться на эту ссылку , чтобы получить регулярное выражение

Кроме того, поскольку у вас есть несколько вариантов номера счета, суммы и даты вам придется придумать набор правил для номера счета, например

1) Слово, которое следует за «номером счета» или «acc / no» или «acc»

2) Слово, которое следует за "INR", "NPR" и т. Д.

3) Слово, которое идет после «вкл» и содержит «/» или «январь, февраль, март, апрель, май, июнь» и т. Д.

0 голосов
/ 07 сентября 2018

Столбец [text] выглядит так, как будто он построен, и выглядит слишком непоследовательным, чтобы использовать обработку строк или регулярное выражение, чтобы найти только номер счета (если вы не согласны с кодированием 3 или 4 вариантов каждого на основе ваших данных, а затем поддерживая их). Я бы скорее предложил найти источник данных в формате 3NF или аналогичный, а затем извлечь данные.

0 голосов
/ 07 сентября 2018

Попробуйте это: http://sqlfiddle.com/#!18/2e0d2/11

WITH test(str) as (
    SELECT 'Your account 18715240300738 has been credited by NPR 20,784.00 on Apr  4 2016  1:30PM REF: BH691241S6807782849 Thank you'
)
SELECT text, SUBSTRING(str, pos1, pos2 - pos1),
SUBSTRING(text, pos3, pos4 - pos3),
SUBSTRING(text, pos5, pos6-pos5)
FROM sms_text
CROSS APPLY (SELECT
    CHARINDEX('NPR ', text) + 4 AS pos1,
    CHARINDEX(' on ', text) AS pos2,
    CHARINDEX(' account ', text)+8 AS pos3, 
    CHARINDEX(' has ', text) AS pos4,
    CHARINDEX(' on ', text)+3 AS pos5, 
    CHARINDEX(' REF: ', text) AS pos6
) AS CA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...