Mysql SELECT unicode 字符

标签 mysql unicode

我有两个表:

单词表:

+----+-------+------+
| id | word  | lang |
+----+-------+------+
|  1 | uña   | es   |
|  2 | two   | en   |
|  3 | three | en   |
|  4 | four  | en   |
+----+-------+------+

stop_words 表:

+----+------+------+
| id | word | lang |
+----+------+------+
|  1 | una  | es   |
|  2 | one  | en   |
+----+------+------+

我需要从 words 表中选择一个单词,但该单词不在 stop_words 表中

  • 如果我尝试以下查询,结果为空,因为 uña 来自 wordsstop_words

    中的 una 匹配
    SELECT  *
    FROM words a WHERE word LIKE  'uñ%' AND lang = 'es'
    AND NOT EXISTS( Select *
        FROM stop_words as b WHERE a.word = b.word AND lang = 'es'
    

    )

  • 如果我尝试使用 BINARY,结果似乎没问题但失败,如果不使用相同的大小写(例如:而是 )

    SELECT  *
    FROM words a WHERE word LIKE BINARY 'Uñ%'  AND lang = 'es'
    AND NOT EXISTS( Select *
        FROM stop_words as b WHERE BINARY a.word = BINARY b.word AND lang = 'es'
    )
    

我使用 utf8mb4_unicode_ci 作为数据库、表和列。

知道如何解决这个问题吗?

最佳答案

SELECT id, word, lang 
FROM words 
WHERE BINARY word NOT IN (Select BINARY word FROM stop_words);

结果:

+----+-------+------+
| id | word  | lang |
+----+-------+------+
|  1 | uña   | es   |
|  2 | two   | en   |
|  3 | three | en   |
|  4 | four  | en   |
+----+-------+------+

对表使用 utf8_unicode_ci

编辑: 对于同样的情况

SELECT  id, word, lang 
FROM words 
WHERE BINARY LOWER(word) NOT IN (Select BINARY LOWER(word) FROM stop_words);

关于Mysql SELECT unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47035415/

相关文章:

android - 我如何在 Android 平台上使用 OpenGL ES 绘制一些 unicode 字符,例如中文

mysql - 返回带有特定标签的行

即使所需字段不存在,MySQL 也允许插入

php - 一种使 php 中的激活链接过期的简单方法?

mysql - 为什么MySQL会出现这种死锁呢?

python - App Engine 中使用 BlobStore 的 Unicode 字符

mysql - 添加 2 列和 2 列的 SUM 之间的 SQL 区别

c++ - std::wstring 在 Windows 上是否支持 UTF-16 和 UTF-32?

javascript - 通过 Django 模板将对象传递给 javascript

unicode - 如何检测非规范化的 unicode 字符?