如何将记录中的字符串标记为行

how to tokenize string in record to be row

我在数据库中有数据 table 命名术语如下:

          ---------------------------------------
          id_term | keyword                     |
          ------- | -----------------------------
              1   | how to make search engine   |
              2   | application engineering     |
              3   | android application example |
           --------------------------------------

那么我希望它是这样的table :

           ----------------------------------
           | id_term | keyword              |
           ----------------------------------
                   1 | how                  |
                   1 | to                   |
                   1 | Make                 |
                   1 | search               |
                   1 | engine               |
                   2 | application          |
                   2 | engineering          |
                   3 | example              |
                   3 | application          |
                   3 | android              |
           ----------------------------------

我尝试使用谷歌搜索来查找拆分字符串的参考资料,但仍然没有找到合适的期望值。在我使用 substring_index 结果完成的实验中,我实际上可能喜欢这样:

              ---------------------------------------
              id_term | keyword                     |
              ------- | -------------------------------
                    1 | how to make search engine   |
                    1 | how to make search engine   |
                    1 | how to make search engine   |
                 --------------------------------------

有什么可以帮助我或解决我的问题吗? mysql 我尝试这样的代码:

 select term.id_kata, SUBSTRING_INDEX (SUBSTRING_INDEX (term.keyword, ',', term.id_kata), ',', -1) keyword term from inner join keyword_doc on CHAR_LENGTH (term.keyword) -CHAR_LENGTH (REPLACE (term.keyword , ',', ''))> = term.id_kata-1 ORDER BY `term`.`keyword` DESC

我已经尝试谷歌搜索大约 5 个小时来找到解决方案,但一直没有找到,直到我困惑地被问到在哪里。有什么想法或可以帮助提供解决方案吗?

问题的解决方法是在SQL SYNTAX中使用'BETWEEN'。此代码 100% 解决问题:

      <?php
      #connection
      $dbhost = 'localhost';
      $dbuser = 'root';
      $dbpass = 'pasword';
      $dbname = 'yourdatabasename';
      error_reporting(E_ALL ^ E_DEPRECATED);
      mysql_connect($dbhost,$dbuser,$dbpass) or die(mysqli_error('cannot   connect to the server')); 
      mysql_select_db($dbname) or die(mysqli('database selection     problem'));

     $frequency = array();
    $datastring = 'SELECT id_term,keyword FROM data_token WHERE id_term   BETWEEN 1 AND 3'; 
    mysql_select_db('yourdatabasename');
    $calldata = mysql_query($datastring);
    while($takedata = mysql_fetch_array($calldata,MYSQL_ASSOC)) 
     {
    $array = explode("\n",$takedata['keyword']);
        foreach ($array as $index => $keyword)
        {
            if(! array_key_exists($keyword,$frequency))
            {
                $frequency[$keyword] = 1;
            }   
            else
            {
                $frequency[$keyword] = $frequency[$keyword] + 1;
            }
        }

        $document = $takedata['id_term'];
        foreach ($frequency as $term => $tf)
        {
            $sqlInput = "INSERT INTO yourtablename  (id_term,keyword,frequency) VALUES ('$dokumen','{$term}', {$tf})";
            mysql_query($sqlInput);
            }
         }

     ?>