HASKELL:使用Maybe(或其他方法)处理数据库查询中的NULL值

时间:2018-12-18 10:47:46

标签: haskell

我有我的Haskell代码使用的SQL查询:

let name = "A    20"
let qry_head_WDS = "select DNUM from WDS where DISC = ?" :: Query
putStrLn "before query WDS"
bd_rows_WDS <- query conn qry_head_WDS (Only (name::String))
putStrLn "after query WDS"

forM_ bd_rows_WDS $ \(Only a) ->
  putStrLn $  Text.unpack a
如果数据库中没有NULL值,但

效果很好 对于N°BD字段,我在运行时遇到了此异常:

before query WDS
*** Exception: UnexpectedNull {errSQLType = "String", errHaskellType =
"Text", errFieldName = "DNUM", errMessage = "unexpected null in table
WDS of database sidonie"}
*Main>

您能帮我处理 场N°BD

1 个答案:

答案 0 :(得分:1)

此解决方案首先来自Haskell-cafe邮件列表:

forM_ bd_rows_WDS $ \(Only x) ->
  case x of
    Nothing -> putStrLn ("x =" ++ "NULL")
    Just x -> putStrLn ("x =" ++ Text.unpack x)
相关问题