Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Perbedaan String PHP dan Pembatasan Dinamis

ketika Christopher Johnson McCandless dipetakan ke {1}{2} :

kemungkinan kombinasi untuk membentuk dua kelompok adalah:

  • Christopher Johnson dan McCandless
  • Christopher dan Johnson McCandless

kapan cinema tomorrow at night dipetakan ke {3}{4}

kemungkinan kombinasi untuk membentuk dua kelompok adalah:

  • cinema dan tomorrow at night
  • cinema tomorrow dan at night
  • cinema tomorrow at dan night

Tulis fungsi PHP keget_possible_groups($string_of_words, $group_count) mengembalikan larik larik kombinasi grup.

dan pernyataan SQL seperti:

SELECT count(*), 'cinema' firstWordGroup, 'tomorrow at night' secondWordGroup
  FROM possibleMatchTable
 WHERE possible_match IN ('cinema', 'tomorrow at night')
UNION
SELECT count(*), 'cinema tomorrow', 'at night'
  FROM possibleMatchTable
 WHERE possible_match IN ('cinema tomorrow', 'at night')
UNION
SELECT count(*), 'cinema tomorrow at', 'night'
  FROM possibleMatchTable
 WHERE possible_match IN ('cinema tomorrow at', 'night');

satu keluaran yang mungkin adalah:

+----------+--------------------+-------------------+
| count(*) | firstWordGroup     | secondWordGroup   |
+----------+--------------------+-------------------+
|        2 | cinema             | tomorrow at night |
|        0 | cinema tomorrow    | at night          |
|        0 | cinema tomorrow at | night             |
+----------+--------------------+-------------------+

mana yang memiliki hitungan 2 (dua kelompok kata) itulah jawaban Anda.

Jika MODEL teks adalah fulltext kolom yang diindeks maka untuk setiap string acak yang diberikan Anda bisa mendapatkan model yang paling relevan seperti:

SELECT * FROM model_strings 
WHERE MATCH(model) AGAINST ('Damn you Spar, Kot will kill you.');

kueri mungkin mengembalikan Anda sesuatu seperti:

+----------------------------------+
| model                            |
+----------------------------------+
| Damn you {1}, {2} will kill you. |
+----------------------------------+

Mengekstrak kata-kata untuk string acak menggunakan placeholder dari Model :

<?php 

$placeholder_pRegEx = '#\{\d+\}#';

$model = 'Damn you {1}, {2} will kill you. {3}{4}{5}';
$string = 'Damn you Spar, Will will kill you. I Love it man.';

$model_words = explode(' ', $model);
$string_words = explode(' ', $string);

$placeholder_words = array();

for ($idx =0, $jdx=0; $idx < count($string_words); $idx ++) {

    if ($jdx < count($model_words)) {
        if (strcmp($string_words[$idx], $model_words[$jdx])) {
            $placeholder_words[] = $string_words[$idx];

            //Move to next word in Model only if it's a placeholder
            if (preg_match($placeholder_pRegEx, $model_words[$jdx]))
                $jdx++;

        } else
            $jdx++; //they match so move to next word
    } else
        $placeholder_words[] = $string_words[$idx];
}

//Even status will have the count
$status = preg_match_all ($placeholder_pRegEx, $model, $placeholders);

$group_count = count($placeholders[0]);

var_dump(get_defined_vars());
?>

Kode di atas akan memberi Anda nilai seperti:

'placeholder_words' => array (size=6)
  0 => string 'Spar,' (length=5)
  1 => string 'Will' (length=4)
  2 => string 'I' (length=1)
  3 => string 'Love' (length=4)
  4 => string 'it' (length=2)
  5 => string 'man.' (length=4)

'placeholders' => array (size=1)
  0 => 
    array (size=5)
      0 => string '{1}' (length=3)
      1 => string '{2}' (length=3)
      2 => string '{3}' (length=3)
      3 => string '{4}' (length=3)
      4 => string '{5}' (length=3)

'group_count' => int 5
  • dari sana Anda dapat memanggil get possible groupings
  • lalu kueri SQL untuk memeriksa kemungkinan kecocokan yang diizinkan
  • kata-kata yang sebenarnya dalam pengelompokan yang diperlukan.

Sayangnya, itu beberapa pertanyaan, eh!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kelompokkan baris dengan interval 7 hari mulai dari tanggal tertentu

  2. Bagaimana SQL ini bisa salah? Apa yang tidak saya lihat?

  3. Panggilan UPSERT standar SQL

  4. CakePHP - jalankan kueri terakhir

  5. Mengekspor hasil kueri MySQL ke excel?