2017-09-04 12 views
1

如何訪問我的查詢[VarcharIntDate]中的數據?haskell postgresql-simple,如何從更廣泛的查詢中訪問特定數據

data VarcharIntDate = VarcharIntDate { 
    vc :: Maybe String, 
    i :: Maybe Int, 
    d :: Maybe Date 
} deriving (Show) 

instance FromRow VarcharIntDate where 
    fromRow = VarcharIntDate <$> field <*> field <*> field 

我知道如何打印出來,但我不能做很多其他事情,因爲我不`噸明白如何對待「IO [VarcharIntDate]」

print =<< (query_ conn "select vc,i,d from varintdate" :: IO [VarcharIntDate]) 

,但我想做什麼是從所有行返回的[VarcharIntDate]或'i'的第n行訪問'd',所以我可以開始從查詢中提取數據並開始使用它。

回答

1

您實際上已經處理了IO [VarcharIntDate]的結果。您使用=<<print。這相當於:

p = 2 -- sample p 

main = do 
    res <- query_ conn "select vc,i,d from varintdate" :: IO [VarcharIntDate] 
    print (map i res) -- print all i's 
    print (d (res!!p)) -- print d of the p-th row 

所以在這裏我們可以:

main = do -- or another function 
    result <- query_ conn "select vc,i,d from varintdate" :: IO [VarcharIntDate] 
    print result 

您可以通過執行map平,或訪問行的ñ個元素像處理的query_結果使用res!!p訪問第p行,然後調用d獲取方來獲取該行的d

如果你想獲得所有的i的你可以使用map i