diff --git a/egison.cabal b/egison.cabal
--- a/egison.cabal
+++ b/egison.cabal
@@ -1,5 +1,5 @@
 Name:                egison
-Version:             3.2.10
+Version:             3.2.11
 Synopsis:            Programming language with non-linear pattern-matching against unfree data types
 Description:         An interpreter for Egison, the programming langugage that realized non-linear pattern-matching with unfree data types.
                      With Egison, you can represent pattern-matching with unfree data types intuitively,
@@ -26,7 +26,9 @@
   location: https://github.com/egisatoshi/egison3.git
   
 Library
-  Build-Depends:   base >= 4.0 && < 5, array, random, containers, unordered-containers, haskeline, transformers, mtl, parsec >= 3.0, directory, ghc, ghc-paths, strict-io, bytestring, mysql
+  Build-Depends:   base >= 4.0 && < 5, array, random, containers, unordered-containers, haskeline, transformers, mtl, parsec >= 3.0, directory, ghc, ghc-paths, strict-io, bytestring, text
+--                   , direct-sqlite -- for 'egison-sqlite'
+--                   , mysql -- for 'egison-mysql'
   Hs-Source-Dirs:  hs-src
   Exposed-Modules:
                    Language.Egison
diff --git a/hs-src/Language/Egison/Primitives.hs b/hs-src/Language/Egison/Primitives.hs
--- a/hs-src/Language/Egison/Primitives.hs
+++ b/hs-src/Language/Egison/Primitives.hs
@@ -15,11 +15,14 @@
 import qualified Data.Sequence as Sq
 
 import System.IO.Unsafe
-import qualified Database.MySQL.Base as MySQL
 import Data.ByteString (ByteString)
 import qualified Data.ByteString as BS
 import qualified Data.ByteString.Char8 as BC
+import qualified Data.Text as T
 
+--import qualified Database.SQLite3 as SQLite -- for 'egison-sqlite'
+--import qualified Database.MySQL.Base as MySQL -- for 'egison-mysql'
+
 import Control.Monad
 
 import Language.Egison.Types
@@ -144,7 +147,8 @@
              , ("assert", assert)
              , ("assert-equal", assertEqual)
 
-             , ("pure-mysql", pureMySQL)
+--             , ("pure-sqlite", pureSQLite) -- for 'egison-sqlite'
+--             , ("pure-mysql", pureMySQL) -- for 'egison-mysql'
              ]
 
 integerUnaryOp :: (Integer -> Integer) -> PrimitiveFunc
@@ -340,8 +344,30 @@
     then return $ Bool True
     else throwError $ Assertion $ show label ++ "\n expected: " ++ show expected ++
                                   "\n but found: " ++ show actual
-
+{-- -- for 'egison-sqlite'
+pureSQLite :: PrimitiveFunc
+pureSQLite  = (liftError .) $ twoArgs $ \val val' -> do
+  dbName <- fromStringValue val
+  qStr <- fromStringValue val'
+  let ret = unsafePerformIO $ query' (T.pack dbName) $ T.pack qStr
+  return $ Collection $ Sq.fromList $ map (\r -> Tuple (map makeStringValue r)) ret
+ where
+  query' :: T.Text -> T.Text -> IO [[String]]
+  query' dbName q = do
+    db <- SQLite.open dbName
+    rowsRef <- newIORef []
+    SQLite.execWithCallback db q (\_ _ mcs -> do
+                                    row <- forM mcs (\mcol -> case mcol of
+                                                              Just col ->  return $ T.unpack col
+                                                              Nothing -> return "null")
+                                    rows <- readIORef rowsRef
+                                    writeIORef rowsRef (row:rows))
+    SQLite.close db
+    ret <- readIORef rowsRef
+    return $ reverse ret
+--}
 
+{--  -- for 'egison-mysql'
 pureMySQL :: PrimitiveFunc
 pureMySQL = (liftError .) $ twoArgs $ \val val' -> do
   dbName <- fromStringValue val
@@ -365,6 +391,7 @@
                                            Nothing -> return "null")
               rows' <- fetchAllRows ret
               return $ row':rows'
+--}
 
 --
 -- IO Primitives
diff --git a/lib/core/database.egi b/lib/core/database.egi
--- a/lib/core/database.egi
+++ b/lib/core/database.egi
@@ -21,7 +21,7 @@
 ;;
 (define $simple-select
   (lambda [$whats $table-name $wheres]
-    {@"select " @(concat (insert-between whats ", ")) @" from " @table-name @" " @(simple-where wheres)}))
+    {@"select " @(intercalate "," whats) @" from " @table-name @" " @(simple-where wheres)}))
 
 (define $simple-where
   (lambda [$wheres]
@@ -32,4 +32,4 @@
                                    {{@key @" = " @val} @(loop-fn rs)}]}))]}
       (match (loop-fn wheres) (list string)
         {[<nil> ""]
-         [<cons $wc $wcs> {@"where " @(concat (insert-between {wc @wcs} " and "))}]}))))
+         [<cons $wc $wcs> {@"where " @(intercalate " and " {wc @wcs})}]}))))
diff --git a/lib/core/string.egi b/lib/core/string.egi
--- a/lib/core/string.egi
+++ b/lib/core/string.egi
@@ -2,9 +2,11 @@
 ;;; String.egi
 ;;;
 
-(define $insert-between
-  (lambda [$ws $in]
+(define $intersperse
+  (lambda [$in $ws]
     (foldl (lambda [$s1 $s2] {@s1 in s2}) {(car ws)} (cdr ws))))
+
+(define $intercalate (compose intersperse concat))
 
 (define $palindrome?
   (lambda [$str]
