4

編集-1

私の実際のデータベースは MSAccess 形式であり、R のパッケージのsqlQuery関数を使用してデータをインポートしていますRODBC。以下は、パッケージを使用して再現可能な例を提供できるように作成している偽のデータベースですRSQLite。関数で正規表現を使用したい sqlQuery

EDIT-1終了

RSQLite以下は、パッケージを使用したモック データベースと関連するクエリです。REGEX(または) 関数が機能せず、そのREGEXP理由がわかりませんでした。

data0 <- read.csv(textConnection(
'ID  value
P9W38   97
P9W39   17
P9W40   78
P9W41   7
P9W42_1 38
P9W42   13
P9W43   18
P9W44   76
P9W45   65
P9W46   24
P9W46_1 44
P9W47   8
P9W48   31
P9W49   82
P9W50   52
P9W50_2 55
P9W51   26
P9W52   33
P9W52_2 79
P9W53   67
P9W54   74
P9W55   55'
),sep='')

dbWriteTable(con, "Mydata", data0)

これらは働いた

dbGetQuery(con, paste0(' select * from Mydata where [ID] like \'P9W38\' '))
dbGetQuery(con, paste0(' select * from Mydata where [ID] like \'P9W42%\' '))

しかし、これらは機能しません

dbGetQuery(con, paste0(' select * from Mydata where [ID] REGEX \'P9W(38|40|50)\' '))
dbGetQuery(con, paste0(' select * from Mydata where [ID] REGEX \'P9W(38|40|50)(_1){,1}\' '))

なにか提案を?

4

1 に答える 1

0

あなたの問題は、REGEXP ではなく REGEX を使用しているクエリ内にあると思います。

http://dev.mysql.com/doc/refman/5.1/en/regexp.html

したがって、コードは次のようになります。

dbGetQuery(con, paste0(' select * from Mydata where [ID] REGEXP \'P9W(38|40|50)\' '))
dbGetQuery(con, paste0(' select * from Mydata where [ID] REGEXP \'P9W(38|40|50)(_1){,1}\' '))

フィードバックをお願いします。私はデータベースをあまり扱っていませんが、問題は解決すると思います

于 2013-07-09T11:18:38.317 に答える