代码之家  ›  专栏  ›  技术社区  ›  Keith

SQL插入脚本中的Chr(0)问题

  •  1
  • Keith  · 技术社区  · 15 年前

    目前,我们使用SQL发布向导来备份数据库架构和数据,但是我们有一些数据库表,它们的哈希密码包含空字符(chr(0))。SQL发布向导生成插入数据脚本时,当我们尝试运行生成的SQL时,空字符会导致错误-它似乎会忽略脚本中该字符第一个实例之后的所有文本。我们最近尝试了RedGate SQL Compare,发现它与此字符有相同的问题。我已经通过对有问题的记录运行ascii()sql函数来确认它是ascii字符代码0。

    Unclosed quotation mark after the character string '??`????{??0???
    

    有趣的是,我不能真正粘贴一个示例Insert语句,因为粘贴时,CHR(0)之后出现的所有内容都会被忽略!

    1 回复  |  直到 15 年前
        1
  •  1
  •   Remus Rusanu    15 年前

    将列的定义更改为VARBINARY。您存储在其中的数据似乎不是一个合适的VARCHAR。

    这将在使用该列的代码中产生涟漪,因为您将在客户端中获得一个字节[]CLR tpe,您应该相应地更改插入/更新代码。但毕竟,passowrd散列是字节[],而不是字符串。