javascript - 带有正则表达式 unicode 的 mysql 查询

标签 javascript php jquery mysql css

我想做一个 mysql 查询来捕获:أرأء

这个字符 أ可以这样输入:( أإاآ )

所以当输入:

$SQL=" select * from work where title REGEX '[\\u0622|\\u0623|\\u0625|\\u0627][\\u0631][\\u0622|\\u0623|\\u0625|\\u0627][\\u0621]" 

不行,我觉得语法不好

最佳答案

MySQL 没有\u 转义。尝试在查询字符串中包含原始 Unicode 字符,并通过 utf8 连接将其传递给 MySQL。你如何做到这一点取决于你使用什么语言和连接器来与 MySQL 对话。最好是将模式字符串从您语言的 native Unicode 字符串类型传递到参数中(如果有的话);例如在 Python-MySQLdb 中我可以这样做:

group= u'[أإاآ]'
pattern= u'%sر%sء' % (chars, chars)
connection.execute('SELECT * FROM work WHERE title REGEX %s', [pattern])

(注意正则表达式字符组中不需要管道字符)

如果您真的根本无法在您的连接中获取 Unicode,MySQL 确实有一个非标准的二进制字符串转义,您可以使用它通过另一种编码获取字符:

WHERE title REGEX 0x5bd8a3d8a5d8a7d8a25dd8b15bd8a3d8a5d8a7d8a25dd8a1 AS utf8  - hex-encoded UTF-8 encoded string

通常您要避免使用 REGEX,因为这意味着 title 列上的任何索引都将无效,并且将强制进行全表搜索。

一种替代方法是执行 WHERE title IN 一个包含所有 16 个可能匹配表达式的字符串的列表。

(最高效的方法是使用已经将所有四个字符视为相等的数据库排序规则。不过我不知道有哪个排序规则草率地匹配了。)

关于javascript - 带有正则表达式 unicode 的 mysql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18592428/

相关文章:

php - 更新记录的处理表格

jquery - 是否可以调整粘在左侧的 div 的宽度以始终覆盖始终居中的 div?

javascript - 模态确认删除 - 不起作用

javascript方法链接,从数组添加方法

javascript - 将命名空间转换为字符串

php - 错误回波计数

php - 关系数据库查询失败

javascript - jQuery 移动 : Why are onClick and onKeyPress events not working?

javascript - 使用 Node.js 从 POST 请求中唯一标识用户

javascript - 我可以用什么代替函数中的 document.write 来程序化生成 html?