我在MySQL数据库表中有一个文本字段,文本值混合了英语和非英语条目(给定字符串从字母表开始被当作英文)。
我想对值进行排序,并在HTML下拉框中使用它。数据示例:

Banana
Apple
Juice
西瓜
水蜜桃
ピタヤピタヤ
ピーチ

我想把它归类为:
Apple
Banana
Juice
西瓜
ピーチ
大水蜜桃
ピタヤピタヤ

首先是英文条目,按字母升序排列;然后是非英文条目,按字符串长度排列。我想我得用PHP来解决,对吧?
PHP伪代码
$result_set = ( get result set from database with MySQL query )
// perform array sort ( after identifying English & non-English
echo '<select>';
foreach($row in $result_set) {
  echo '<option value="{ some values here }">{ row text }</option>';
}
echo '</select>';

这里有两个问题:
如何识别英文和非英文条目(在PHP/MySQL中)?
只有在MySQL中才能解决这个问题吗?

最佳答案

应按下列顺序条款执行:

ORDER BY IF(is_english(text), text, "zzzzzzzzz"), CHAR_LENGTH(text)

您需要了解如何实现is_english()。一个简单的方法是向数据库中添加一个列。或者使用regex查找任何非英语字母。

10-04 15:51