我正在使用一个包含三列的表(ID | NOTE | TAG)
ID-主键
注意 - 有些事情
TAG-包含以空格分隔的值
想象一下 id-1包含TAG- 计算机javaScript java forton手机和id-2包含TAG- 计算机java forton c ++ android
当使用通配符搜索位于字符串中间的术语 java 时,SQLITE还会显示包含 javascript
的行我的查询
" LIKE '%" + "java" + "%'";
如果在其中的任何地方找到 java 这个词,那么这会显示行(即)它还显示 java 以及 javaScript as Scriptinjava
如何让它只显示 java ??
答案 0 :(得分:1)
有时,我们会遇到其他人糟糕的设计决定。幸运的是,大多数人都知道将字符串存储在字符串中是一个坏主意。因此,他们使用正确的SQL结构,这是一个每个列表项有一行的表。
但是,我们坚持其他人的错误决定,无法修复底层数据结构,可以使用SQL来做你想做的事情。在MySQL中,您可以将其表达为:
WHERE concat(' ', tags, ' ') LIKE '% '" + "java" + "' %'
(我假设+
是您正在使用的应用程序语言中的字符串连接运算符。)
答案 1 :(得分:0)
像这样:
where tags = 'java'
or tags like 'java %' -- starts with java
or tags like '% java %' -- java in the middle
or tags like '% java' -- ends with java