gpt4 book ai didi

MYSQL 搜索表、位字段

转载 作者:行者123 更新时间:2023-11-30 01:28:58 26 4
gpt4 key购买 nike

我有一个包含行的表,其中一个字段是 7 位数字的位值。

假设我有一个程序,我想选择该位字段等于“0101010”的所有行,这可以通过 select * where .... 等轻松完成。

但是:如果我想允许一位或多位数字为 1 或 0,即我想获取位域在 1001*1* 形式上有条目的所有行,其中* 可以是 1 或 0。因此,在这种情况下,我想要位字段为 1001010、1001011、1001110 或 1001111 的所有条目。

select * from TABLE where bit_field in (1001010, 1001011, 1001110, 1001111) 可能会在此示例中工作,但如果我只想使用字符串“1001*1*”作为过程的输入,那么该怎么办?。非常感谢任何帮助。

谢谢,尼克拉斯

编辑:我已经尝试过:从表中选择*,其中字段如位'\\\0';用于获取 **0 形式的所有条目,但这不起作用...

Edit2:事实证明它是一个位字段,而不是二进制......但问题仍然存在。

最佳答案

本身并不是对您问题的直接回答,而是一种替代方法。您提到由于遗留代码,您不想转换为单独的列。如果您确实想要单独的列,并且唯一阻碍您的是旧代码,请考虑以下内容。

您可以为选项添加列并使用插入/更新触发器来填充它们,或者您可以创建一个将这些位拆分为单独列的 View 。对于新的开发,您可以对新列进行编码。随着时间的推移,当您修改旧代码时,您可以将其更改为新方法。当所有“读取”遗留代码都已更改后,最后一步是更改“写入”代码以使用新列而不是位列并删除触发器。

我有一个 SQL Fiddle 演示了这个 here 。请注意,为了简洁起见,我只包含了一个插入触发器。

关于MYSQL 搜索表、位字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17682992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com