mysql - 如何使通配符考虑之间的空格

标签 mysql sql sqlite android-sqlite

我正在使用一个包含三列的表格(ID | NOTE |TAG)

ID-主键

注意-一些事情

TAG-包含用空格分隔的值

想象一下 id-1 包含 TAG- 计算机 javaScript java forton 手机

并且 id-2 包含标签-computer java forton c++ android

当使用通配符搜索位于字符串中间的术语java时,SQLITE还会显示包含javascript的行

我的查询 "LIKE '%"+ "java"+ "%'"; 如果在内部任意位置找到单词 java,则显示行(即,它显示 java 以及javaScript以及Scriptinjava

如何让它只显示java ??

最佳答案

有时,我们会被其他人糟糕的设计决策所困扰。幸运的是,大多数人都知道将列表存储在字符串中是一个坏主意。因此,他们使用正确的 SQL 结构,即每个列表项一行的表。

但是,我们被其他人的错误决定所困,无法修复底层数据结构,可以使用 SQL 来做你想做的事情。在 MySQL 中,您可以将其表示为:

WHERE concat(' ', tags, ' ') LIKE '% '" + "java" + "' %'

(我假设 + 是您正在使用的应用程序语言中的字符串连接运算符。)

关于mysql - 如何使通配符考虑之间的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31093364/

相关文章:

php - 如何将下拉菜单中的选定数据插入数据库中的多个表

mysql - 截断 SQL 数据库中的几乎所有表

PHP/MySQL - 编辑审批系统

c# - 纯托管 SQLite NET 包装器

Android - 如何检查我的应用程序之前是否已安装到设备?

mysql - 如何将远程 ASP 站点与站点的本地副本同步?

php - Mysql 存储过程

sql - MS Access SQL : Using SELECT INTO with a UNION ALL query

mysql - 如何显示50个数据库中的特定列?

java - 如何在可执行 Jar 中包含 SQLite 数据库?