sql >> Databasteknik >  >> RDS >> Mysql

Jämför strängar i PHP på samma sätt som MySQL gör

Samlingen har inget med lagringen att göra. Du måste ställa in teckenuppsättningen för att bestämma lagringskodningen. Sammanställningen styr hur jämförelse och sortering ska ske. Sorteringen måste vara medveten om teckenuppsättningen, men annars har det ingenting med teckenuppsättningen att göra.

För att svara på din fråga kan du använda iconv att translittera texten och sedan jämföra den. Till exempel:

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

Detta är i princip vad MySql kommer att göra för dig, även om det förmodligen är snabbare och det kan ha en något annorlunda sorteringstabell än ISO-8859-1//TRANSLIT . Inte helt säker på det.

Skulle förmodligen vara lättare att använda databasen dock, som andra redan har föreslagit.



  1. Oracle SQL - Hur man hämtar de högsta 5 värdena i en kolumn

  2. Hur väljer man över två tabeller?

  3. Solr 4.6.0 DataImportHandler snabbar upp prestandan

  4. Spring JPA + växlar datakällan dynamiskt mellan scheman i postgresql