Mysql

MySQL:基於 JSON 布爾值的虛擬列 - 可以將布爾值轉換為 tinyint 嗎?

  • July 13, 2022

我有一個帶有 json 欄位的表和一個具有以下配置attributes的虛擬 tinyint(布爾)列:flights

JSON_UNQUOTE(attributes->"$.flights")

json 欄位中的flights屬性是“真正的”布爾值,例如。true. 當將此屬性添加到 MySQL 返回的 json 欄位時Incorrect integer value: 'true' for column 'flights' at row 1,這是可以理解的。

我的問題是是否可以更改虛擬列的配置,以便將布爾值即時轉換為正確的整數值?

最終我自己在苦苦掙扎後找到了解決方案。如果有人正在尋找類似的答案 - 這就是我的做法:

CAST(attributes->"$.flights" as signed int)

WITH cte AS (
    SELECT CAST('{"flights":true}' AS JSON) attributes
    UNION ALL
    SELECT '{"flights":false}'
)
SELECT JSON_PRETTY(attributes), 
       attributes->'$.flights' + 0
FROM cte

db<>在這裡擺弄

引用自:https://dba.stackexchange.com/questions/314335