[英]Formatting true/false in sql
我正在傳遞我直接從mysql獲取到json的字典。 不幸的是,當嘗試使用以下錯誤解析布爾值時,json失敗:
'當前令牌(VALUE_NUMBER_INT)不是布爾類型
以下是將TINYINT(1)
轉換為javascript布爾值的首選方法嗎?
if(tm.is_live, 'true', 'false') live_for_preorder,
我似乎還記得MySQL是那些罕見的數據庫之一,可讓您在普通SELECT語句中使用IF,而大多數dbms都會堅持使用IF,IF是為控制流保留的
因此,MySQL似乎在告訴您,如果需要,則不向IF提供布爾值。 將您的語句轉換為返回布爾值的比較:
if(tm.is_live=1, 'true', 'false') live_for_preorder,
(如果您使用1表示true,使用0表示false)
為了使您的數據庫技能集更具可移植性,最好在選擇查詢中養成使用CASE而不是IF的習慣:
CASE tm.is_live WHEN 1 THEN 'true' ELSE 'false' END live_for_preorder,
CASE WHEN tm.is_live = 1 THEN 'true' ELSE 'false' END live_for_preorder,
一個案例可以有任意數量的WHEN,但是您不能混合使用表單,它可以是CASE variable WHEN comparevalue THEN outputvalue [when when when else] END
,也可以是CASE variable WHEN comparevalue THEN outputvalue [when when when else] END
CASE WHEN test THEN output [when when when else] END
如果要轉換為MySQL布爾值,只需執行以下操作:
select (tm.is_live <> 0) as live_for_preorder,
如果這被Javascript接受,那么這將是最簡單的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.