簡體   English   中英

在SQL中格式化true / false

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM