Php 对非拉丁字符不敏感的SQL查询?

Php 对非拉丁字符不敏感的SQL查询?,php,mysql,sql,collation,Php,Mysql,Sql,Collation,有没有办法用where子句编写一个select查询,忽略非拉丁字符 例如,立陶宛语字符Ė,显然拉丁语字符中的等效字符是E。那么,我是否可以编写这样的查询: SELECT * FROM `table` WHERE `keyword` LIKE %E%; 我想让它返回所有包含这些字符的记录:E,Ė,Ę,有没有什么方法可以用SQL自动实现这一点(甚至是在PHP级别)?你没有说你尝试了什么。您也不会说表包含什么字符集(utf-8)和排序规则。这些是默认情况下你控制这些事情的方式 alter table

有没有办法用
where
子句编写一个
select
查询,忽略非拉丁字符

例如,立陶宛语字符
Ė
,显然拉丁语字符中的等效字符是
E
。那么,我是否可以编写这样的查询:

SELECT * FROM `table` WHERE `keyword` LIKE %E%;

我想让它返回所有包含这些字符的记录:
E,Ė,Ę
,有没有什么方法可以用SQL自动实现这一点(甚至是在PHP级别)?

你没有说你尝试了什么。您也不会说
表包含什么字符集(utf-8)和排序规则。这些是默认情况下你控制这些事情的方式

alter table `table`
  change `keyword` `keyword` collate utf8_lithuanian_ci
你可以试试这个:

 SELECT * FROM `table` WHERE `keyword` COLLATE utf8_general_ci LIKE %E%
还是这个

 SELECT * FROM `table` WHERE `keyword` COLLATE utf8_lithuanian_ci LIKE %E%
我不知道第二个能不能满足你的要求,因为我不懂立陶宛语。在字典里,E、Ė和Ę被认为是同一个字母吗?如果它们不是,那么立陶宛的排序规则将无法将它们相互匹配

如果您确实发现某个特定的排序规则有效,您可以在默认情况下更改列以使用该排序规则

alter table `table`
  change `keyword` `keyword` collate utf8_lithuanian_ci

这是个好主意,因为这样你就有机会加快你的搜索速度。

你没有说你尝试过什么。您也不会说
表包含什么字符集(utf-8)和排序规则。这些是默认情况下你控制这些事情的方式

alter table `table`
  change `keyword` `keyword` collate utf8_lithuanian_ci
你可以试试这个:

 SELECT * FROM `table` WHERE `keyword` COLLATE utf8_general_ci LIKE %E%
还是这个

 SELECT * FROM `table` WHERE `keyword` COLLATE utf8_lithuanian_ci LIKE %E%
我不知道第二个能不能满足你的要求,因为我不懂立陶宛语。在字典里,E、Ė和Ę被认为是同一个字母吗?如果它们不是,那么立陶宛的排序规则将无法将它们相互匹配

如果您确实发现某个特定的排序规则有效,您可以在默认情况下更改列以使用该排序规则

alter table `table`
  change `keyword` `keyword` collate utf8_lithuanian_ci

这是个好主意,因为这样你就有机会加快你的搜索速度。

你没有说你尝试过什么。您也不会说
表包含什么字符集(utf-8)和排序规则。这些是默认情况下你控制这些事情的方式

alter table `table`
  change `keyword` `keyword` collate utf8_lithuanian_ci
你可以试试这个:

 SELECT * FROM `table` WHERE `keyword` COLLATE utf8_general_ci LIKE %E%
还是这个

 SELECT * FROM `table` WHERE `keyword` COLLATE utf8_lithuanian_ci LIKE %E%
我不知道第二个能不能满足你的要求,因为我不懂立陶宛语。在字典里,E、Ė和Ę被认为是同一个字母吗?如果它们不是,那么立陶宛的排序规则将无法将它们相互匹配

如果您确实发现某个特定的排序规则有效,您可以在默认情况下更改列以使用该排序规则

alter table `table`
  change `keyword` `keyword` collate utf8_lithuanian_ci

这是个好主意,因为这样你就有机会加快你的搜索速度。

你没有说你尝试过什么。您也不会说
表包含什么字符集(utf-8)和排序规则。这些是默认情况下你控制这些事情的方式

alter table `table`
  change `keyword` `keyword` collate utf8_lithuanian_ci
你可以试试这个:

 SELECT * FROM `table` WHERE `keyword` COLLATE utf8_general_ci LIKE %E%
还是这个

 SELECT * FROM `table` WHERE `keyword` COLLATE utf8_lithuanian_ci LIKE %E%
我不知道第二个能不能满足你的要求,因为我不懂立陶宛语。在字典里,E、Ė和Ę被认为是同一个字母吗?如果它们不是,那么立陶宛的排序规则将无法将它们相互匹配

如果您确实发现某个特定的排序规则有效,您可以在默认情况下更改列以使用该排序规则

alter table `table`
  change `keyword` `keyword` collate utf8_lithuanian_ci

这是一个好主意,因为这样你就有机会加快搜索速度。

老实说,我什么都没试过,只是因为我根本不知道该试什么,也不知道该用谷歌搜索什么。除了在PHP数组中使用char-map破解一些解决方案之外。无论如何,你提出的第一个问题似乎正是我想要的。谢谢!老实说,我什么都没试过,只是因为我不知道该试什么,也不知道该用谷歌搜索什么。除了在PHP数组中使用char-map破解一些解决方案之外。无论如何,你提出的第一个问题似乎正是我想要的。谢谢!老实说,我什么都没试过,只是因为我不知道该试什么,也不知道该用谷歌搜索什么。除了在PHP数组中使用char-map破解一些解决方案之外。无论如何,你提出的第一个问题似乎正是我想要的。谢谢!老实说,我什么都没试过,只是因为我不知道该试什么,也不知道该用谷歌搜索什么。除了在PHP数组中使用char-map破解一些解决方案之外。无论如何,你提出的第一个问题似乎正是我想要的。谢谢!