【发布时间】:2011-03-20 16:36:49
【问题描述】:
我现在正在 iPhone 平台上的 sqlite 上工作,并处理带有一些奇怪实体的数据库。该数据库中的一列称为类型,它允许多个值(多种类型)。这一栏的数据是这样的:
1|9|20|31|999
表格是这样的:
ID TYPE
------------------------
1 1|9|20|31|999
2 5|13|15|30|990
3 6|7|45|46|57
当用户要选择类型为9的数据时,需要选择上面的数据,因为实体包含9。我使用如下语句执行:
SELECT id
FROM table
WHERE type LIKE '%' || ? || '%'
问题是类型为 999 的数据和没有类型 9 的数据也会被选中。另外,如果用户要选择类型1,那么类型为11、12、13...等的数据也会被选中。
我尝试使用语句:
SELECT id
FROM table
WHERE type LIKE '[^0123456789]' || ? || '[^0123456789]'
但它不能选择任何数据。
如何选择正确类型的数据?
(因公司要求,不能更改数据库)
【问题讨论】:
-
这看起来像是一个正则表达式问题。不作为答案发布,因为我没有提供表达式本身。 :)
-
附注- 更努力地更改数据库 - 这太可怕了,一开始就这样做,你最终会节省更多。
-
谢谢大家。已经被 bw_üezi'answer 解决了