我正在使用REGEXP过滤一个包含10行的数据集,如下所示:
ID Product
1 "VENLAFAXINE HCL CAP ER 24HR 37.5 MG (BASE EQUIVALENT)"
2 "MINOXIDIL POWDER"
3 "MENTHOL LOZENGE 10 MG"
4 "ZINC CHLORIDE GRANULES"
5 "CLOPIDOGREL BISULFATE TAB 75 MG (BASE EQUIV)"
6 "METHYLPREDNISOLONE TAB THERAPY PACK 4 MG (21)"
7 "DEXAMETHASONE TAB THERAPY PACK 1.5 MG (7)"
8 "METHYLPREDNISOLONE DOSE P (16)"
9 "MILLIPRED DP (13)"
10 "ZONACORT 7 DAY"会让它看起来像
ID Product
6 "METHYLPREDNISOLONE TAB THERAPY PACK 4 MG (21)"
7 "DEXAMETHASONE TAB THERAPY PACK 1.5 MG (7)"
8 "METHYLPREDNISOLONE DOSE P (16)"
9 "MILLIPRED DP (13)"实际上,我希望根据最后一个字符是否是括号中的数字来过滤数据集。我已经尝试过了,但是没有用到:
SELECT ID, Product
FROM DAT
WHERE product like '%[(][0-9][)]';发布于 2021-03-09 01:21:45
您可以尝试使用RLIKE来匹配正则表达式模式:
SELECT ID, Product
FROM DAT
WHERE product RLIKE '\\([0-9]+\\)$';发布于 2021-03-09 01:10:50
在base R中,我们可以使用grepl来匹配开始括号(\\(),后跟一个或多个数字(\\d+),然后是字符串末尾的结束括号(\\)) ($
subset(df1, grepl("\\(\\d+\\)$", Product))
# ID Product
#6 6 METHYLPREDNISOLONE TAB THERAPY PACK 4 MG (21)
#7 7 DEXAMETHASONE TAB THERAPY PACK 1.5 MG (7)
#8 8 METHYLPREDNISOLONE DOSE P (16)
#9 9 MILLIPRED DP (13)数据
df1 <- structure(list(ID = 1:10, Product = c("VENLAFAXINE HCL CAP ER 24HR 37.5 MG (BASE EQUIVALENT)",
"MINOXIDIL POWDER", "MENTHOL LOZENGE 10 MG", "ZINC CHLORIDE GRANULES",
"CLOPIDOGREL BISULFATE TAB 75 MG (BASE EQUIV)", "METHYLPREDNISOLONE TAB THERAPY PACK 4 MG (21)",
"DEXAMETHASONE TAB THERAPY PACK 1.5 MG (7)", "METHYLPREDNISOLONE DOSE P (16)",
"MILLIPRED DP (13)", "ZONACORT 7 DAY")), class = "data.frame", row.names = c(NA,
-10L))发布于 2021-03-09 01:11:49
遗憾的是,SQL Server不支持正则表达式。但是你可以这样做:
WHERE product like '%([0-9]%)' AND
product NOT LIKE '%(%[^0-9]%)'第一个条件检查字符串末尾是否有中间有数字的圆括号。
第二个验证括号之间的所有字符都是数字。
也就是说,这并不完美,但如果product中没有其他括号,它就可以工作。
https://stackoverflow.com/questions/66534131
复制相似问题