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

Я хотел бы преобразовать подстроку в римском в цифру, и наоборот.

Входные данные будут выглядеть примерно так:

Blockquote

Input               Output
Satu I              Satu 1
Dua II              Dua 2
Tiga Iii            Tiga 3
empat Iv            empat 4
lima v              lima 5
enam VI             enam 6
Tujuh 7             Tujuh VII
delapan 8           Delapan VIII
Sembilan belas Ix   Sembilan belas 19
dua puluh xx        dua puluh 20
Dua Satu xxi        Dua Satu 21
No numeral          No numeral
No roman            No roman

Римская подстрока имеет несовместимый формат (прописные / строчные / заглавные)

Есть ли простой способ сделать это?

Или (вторые вопросы), как получить последнюю подстроку из строки (I, II, Iii, Iv, v, VI, 7, 8, Ix, xx, xxi)?

Я использую MySQL.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Если вы найдете последнюю подстроку, сделайте следующее:

SELECT REVERSE(LEFT(REVERSE(INPUT), LOCATE(' ',REVERSE(INPUT))));

Я проверил ее с одним из ваших значений: Отметьте здесь

0 голосов
/ 15 ноября 2018

Попробуйте создать временную таблицу, в которой будут преобразованы суффикс или римские цифры в числа.

INSERT INTO #tmpSuffixName(
        sufCode,
        sufLetter)
    VALUES
        ('00',' '),('01','Sr.'),('02','Jr.'),('03','I'),('04','II'),
        ('05','III'),('06','IV'),('07','V'),('08','VI'),('09','VII'),
        ('10','VIII'),('11','IX'),('12','X'),('13','Sr. I'),('14','Sr. II'),
        ('15','Sr. III'),('16','Sr. IV'),('17','Sr. V'),('18','Sr. VI'),
        ('19','Sr. VII'),('20','Sr. VIII'),('21','Sr. IX'),('22','Sr. X'),
        ('23','Jr. I'),('24','Jr. II'),('25','Jr. III'),('26','Jr. IV'),
        ('27','Jr. V'),('28','Jr. VI'),('29','Jr. VII'),('30','Jr. VIII'),
        ('31','Jr. IX'),('32','Jr. X')

И вы можете выполнить запрос следующим образом:

SELECT
            @mstrSuffix = sufCode
        FROM #tmpCustomer
            INNER JOIN #tmpSuffixName
                ON ISNULL(tmpSuffixName, ' ') = sufLetter
        WHERE ID = @GetID
...