我正在尝试使用 mysql 虚拟列功能来实现搜索机制,其中我的预订号码可能是像 101 这样的实整数或像 A101、B101 等的字母数字。
所以我确实需要建立一个搜索机制,用户将输入 101,我将获取所有带有 101 的预订,这肯定是一个预订,但我也会获取所有带有 A101 、 B101 等字符的预订,希望你明白这一点。
我使用带有 json 的虚拟列,它们非常有效,如下所示。
DB::statement('ALTER TABLE finances ADD meta_type BIGINT AS (JSON_UNQUOTE(meta->"$.type"))');
在这里提取 json 值并将其分配给我的新虚拟列
现在我需要做同样的步骤,但有另一个逻辑
DB::statement('ALTER TABLE bookings ADD number_vc BIGINT AS ( convert number column which is alpha numeric to integer only )');
我想摆脱数字列值中的所有字符,将其全部剥离,只留下整数分配给我的 number_vc 新列,所以当我的迁移成功执行时,我将得到以下结果
ID | 数字 | number_vc(新的虚拟列) |
---|---|---|
1 | 101 | 101 |
2 | A101 | 101 |
3 | B101 | 101 |
所以我错过了 As (在我的声明中转换)所以任何帮助将不胜感激!