将 CHAR 转换为 BIT

Gar*_*hl 3 mysql type-conversion

我有一个 char(16) 数据类型的列,它被错误地设置为 char(16) 实际上它应该是 bit(1) 因为它只包含三个不同的值,如下所示:

  • 16 个字符长的字符串
  • 10 个字符长的字符串
  • 空白值

现在,我想将空白和 10 个字符长的字符串转换为 0,将 16 个字符的字符串转换为 1。但是表非常大,所以我认为我应该避免任何实验并追求最佳方法。

首先,我想创建和索引然后更新列,然后更改数据类型。

atx*_*dba 5

你能更具体地说明“相当大”吗?总的来说,你是对的,你不应该只是在生产中“做现场”,有任何变化。您是否有任何可以先运行的 QA 或测试环境?

这不是最性感的忍者单行方式,但你可以

  • 添加新的位列
  • 问题更新设置新列 = if(length(old_column)=16,1,0)
  • 更改表以删除旧列并重命名新列