【问题标题】:combine string with column name in query with sha1使用 sha1 将查询中的字符串与列名结合起来
【发布时间】:2013-12-29 12:12:01
【问题描述】:

我想用同一张表的另一列对我的数据库中的密码进行哈希处理。我一直在尝试通过查询来执行此操作,但我一直收到同样的错误。

这是我用于测试登录的示例查询。 12345678 是密码,我想将电子邮件地址用作哈希。

SELECT * FROM users WHERE
SHA1(CONCAT('12345678', `email`)) = password

当我在 mysql 中执行此操作时,出现以下错误:

#1267 - Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation '='

【问题讨论】:

    标签: mysql sql sha1 concat


    【解决方案1】:

    您可以指定显式排序规则

    SELECT * FROM users 
    WHERE SHA1(CONCAT('12345678', `email`)) = password collate utf8_general_ci
    

    【讨论】:

    • 这给出了错误:#1253 - COLLATION 'utf8_general_ci' 对 CHARACTER SET 'latin1' 无效
    • 将表格的字符集更改为utf8后确实有效。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多