SQL如何将罗马数字转换为数字,反之亦然

时间:2018-11-15 06:43:05

标签: sql sqlite mysql-workbench

我想将罗马的子字符串转换为数字,反之亦然。

输入数据将是这样的:

  

Blockquote

mysql.h

罗马子字符串格式不一致(大写/小写/标题大小写)

有简单的方法吗?

否则(第二个问题),如何从字符串(I,II,Iii,Iv,v,VI,7、8,Ix,xx,xxi)中获取最后一个子字符串?

我正在使用MySQL。

谢谢。

2 个答案:

答案 0 :(得分:1)

如果找到最后一个子字符串,请执行以下操作:

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

我用您的一个值对其进行了测试:选中here

答案 1 :(得分:0)

尝试创建一个临时表,将后缀或罗马数字转换为数字。

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