我有一张阿拉伯文字表。我想删除重复的行。鉴于阿拉伯语的符号:
我的桌子: vocabulary
+----+----------+--------------------------------+
| id | word | mean |
--------------------------------------------------
| 1 | سِلام | xxx |
--------------------------------------------------
| 2 | سَلام | xxx |
--------------------------------------------------
| 3 | سلام | xxx |
--------------------------------------------------
| 4 | سلام | xxx |
+------------------------------------------------+
现在我想要这张桌子:
+----+----------+--------------------------------+
| id | word | mean |
--------------------------------------------------
| 1 | سِلام | xxx |
--------------------------------------------------
| 2 | سَلام | xxx |
--------------------------------------------------
| 3 | سلام | xxx |
+------------------------------------------------+
我怎样才能做到这一点 ?!
我的尝试:
$result = mysql_query( "SELECT * FROM vocabulary where");
while($end = mysql_fetch_assoc($result)){
$word = $end["word"];
$mean = $end["mean"];
$id = $end["id"];
$result2 = mysql_query( "SELECT * FROM vocabulary where word='$word' AND mean='$mean'");
$TotalResults = mysql_num_rows($result2);
if($TotalResults>1){
mysql_query( "DELETE FROM vocabulary WHERE id='$id'");
}
简介:如何使MySQL对阿拉伯符号敏感?
有多种方法可以实现此目的。
1-您可以从数据库中选择行,循环遍历并将“ word”标题保存在数组中,并且在循环的每次迭代中,您都可以检查类似的值是否为in_array()
。如果该值存在,则可以将ID保存在另一个数组中,然后使用这些ID从数据库中删除。
2-提取ID的另一种方法是使用类似于以下内容的查询:
select count(*), id from table group by title
然后,您可以遍历结果并删除count大于1的行(使用ID)。
这两种方法(以及其他方法)的基本概念都是,您只需要匹配字符串即可。字母上的语音会更改实际的字符串,因此“ سَلام”不等于“سلام”。
附带说明一下,有一个很棒的阿拉伯语PHP库,可用于各种与阿拉伯语相关的字符串操作:PHP和阿拉伯语语言。
这种方式只会删除一个重复项。
还有其他几种方法,这完全取决于您拥有的数据集的大小,并且删除这些重复项是一次性的还是经常的,因为您必须牢记性能。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句