【问题标题】:Mysql - How can I selecting rows based on binary compare of PART of a blobMysql - 如何根据 blob 部分的二进制比较选择行
【发布时间】:2014-08-22 15:18:29
【问题描述】:

我有一个包含 varbinary 列的表 我想选择该数据的第一个字节为 0x0b 的所有行

有没有办法根据第一个字节的比较来选择查询?

也许使用“喜欢”?
谢谢

【问题讨论】:

  • 这是一种低效设计数据库的好方法。恭喜,您是数以百万计必须处理绝对可怕的建模和存储数据方式的人中的一员。由于我所写的内容并没有真正的帮助,我只希望您在处理这种可怕的任务时不会遇到太多问题。祝你好运!

标签: mysql select varbinary


【解决方案1】:

不在 MySQL 中(我假设您根据标签使用它)。

如果您有能力创建表,我建议您创建一个分片表,将您需要查询的位分隔成单独的tinyint 列。您需要在 DBMS 之外处理分片,因为触发器无法提供帮助,但是拥有分片表肯定会使这些类型的查询更快。

如果不是,那么您将不得不查询大于和小于,然后循环执行按位运算。

这两种解决方案都假定可以访问请求系统。如果你是严格意义上的 DBA,那就不行。

【讨论】:

  • 该死的......是的,我只能访问那个 blob。使用 Mysql Work bench 我可以查看二进制数据,但我真的很想隔离在第一个字节中具有特定值的行。 - 我需要更改此值,因为输入此数据的客户端应用在 2 周内不会更新...
  • 老实说,我会在 bash 或 shell 中编写一个更新脚本(如果您可以访问其中任何一个)。您可以运行查询并写入文件,或将输出通过管道传输到快速awk | grep | sed 并反馈到另一个更新查询。
  • 如果你只需要这样做一次,你可以做一个 SQL 转储,将数据库导入 MSSQL,在那里按位执行UPDATE,然后再次转储并重新导入 MySQL。
猜你喜欢
  • 1970-01-01
  • 2021-03-12
  • 2013-08-03
  • 2017-06-26
  • 2011-01-11
  • 1970-01-01
  • 2017-05-01
  • 2012-04-05
  • 1970-01-01
相关资源
最近更新 更多