Haskell Postgresql-simple,如何从更广泛的查询中访问特定数据



我如何访问查询中的数据[varcharintdate]?

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',因此我可以开始从查询中提取数据并开始使用它。

您实际上已经处理了IO [VarcharIntDate]的结果。您将=<<print一起使用。这相当于:

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

您可以通过执行map ping或访问该行的 n - the element of query_的结果,例如:

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

因此,在这里我们可以使用 res!!p访问 p -th行,然后调用 d getter以获取该行的d

如果要获取所有i s,则可以使用map i

最新更新