sql >> Database teknologi >  >> RDS >> Mysql

Sammenligning af strenge i PHP på samme måde som MySQL gør

Samlingen har intet med opbevaringen at gøre. Du skal indstille tegnsættet for at bestemme lagerkodningen. Samlingen styrer, hvordan sammenligning og sortering skal foregå. Sorteringen skal være bevidst om tegnsæt, men ellers har det intet at gøre med tegnsættet.

For at besvare dit spørgsmål kan du bruge iconv at translittere teksten og derefter sammenligne den. For eksempel:

function compare($s1, $s2) {
  return strcmp(
    iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s1),
    iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $s2));
}

Dette er dybest set, hvad MySql vil gøre for dig, selvom det sandsynligvis er hurtigere, og det kan have en lidt anderledes sorteringstabel end ISO-8859-1//TRANSLIT . Ikke helt sikker på det.

Det ville nok være nemmere at bruge databasen, som andre allerede har foreslået.



  1. Hvordan implementerer man gapless, brugervenlige ID'er i NHibernate?

  2. Konvertering af rækker med for mange værdier til kolonner

  3. mysql få seneste række med den mest almindelige kolonneværdi

  4. Sådan overføres ny PK til lagret proc i Oracle Apex