使用mysql解析字符串值

时间:2013-06-18 05:55:28

标签: mysql mysql-workbench

我以这种方式在列中有一个值

“ID = Clarizen,OU = GROUP,DC = OpenSSO的,DC = java中,DC =净| ID = devendrat,OU = USER,DC = OpenSSO的,DC = java中,DC =净”

我想从此字符串中提取组名称和用户名,并将其存储到另一个表的不同列中。

期望的结果:

Clarizen作为Groupname devendrat as Username

请帮忙

2 个答案:

答案 0 :(得分:0)

您正在寻找CharIndex和Substring选项。 以下适用于T-SQL。我不确定My SQL中的语法

SELECT REPLACE(SUBSTRING(ColumnName,1,CHARINDEX(',',ColumnName) - 1),'ID=','') 
       AS Groupname,
       REPLACE(SUBSTRING(SUBSTRING(ColumnName,CHARINDEX('|',ColumnName),
       LEN(ColumnName)),1,
       CHARINDEX(',',ColumnName) - 1),'|ID=','') AS Username 

答案 1 :(得分:-1)

(对不起,这是C#我忽略了你使用的是mysql,所以答案对你来说没用,但除非有人要删除,否则我会把它留在这里)

使用字符串拆分可以完成工作,这是我鞭打的东西,它不会是最佳的,但它肯定有效!

        string parse_me = "id=Clarizen,ou=GROUP,dc=opensso,dc=java,dc=net|id=devendrat,ou=USER,dc=opensso,dc=java,dc=net";

        string[] lines = parse_me.Split(',');

        List<string> variables = new List<string>();
        List<string> values = new List<string>();

        foreach (string line in lines)
        {
            string[] pair = line.Split('=');
            //Console.WriteLine(line);
            variables.Add(pair[0]);
            values.Add(pair[1]);
        }

        string group = "";
        string user = "";

        if (variables.Count == values.Count)
        {
            for (int i = 0; i < variables.Count; ++i )
            {
                Console.Write(variables[i]);
                Console.Write(" : ");
                Console.WriteLine(values[i]);

                if (variables[i] == "ou")
                {
                    if (group == "")
                    {
                        group = values[i];
                    }
                    else if (user == "")
                    {
                        user = values[i];
                    }
                }
            }
        }

        Console.WriteLine("Group is: " + group);
        Console.WriteLine("User is: " + user);

        Console.ReadLine();