我有一个包含以下数据的表数据
No Data
1 access author basic chapter data database information
2 author basic black data chapter creating overview project scope using code
3 basic data edition author special any assumed been book contained corporation damages
我正在尝试编写一个在LIKE子句的帮助下进行模式匹配的查询 这是我的查询
rs=s.executeQuery("SELECT No from datatable where Data LIKE '%author basic data%');
应该检索所有No 1,2和3的记录,但它不返回任何内容
如果我执行此查询
rs=s.executeQuery("SELECT No from datatable where Data LIKE '%author basic%');
,输出为1号和2号,但不是3号 那么我怎么能写出这样一个给我理想输出的查询
提前致谢
答案 0 :(得分:3)
您查询是否存在类似%author basic data%
的完整子字符串。试试这个:
SELECT
No
FROM
datatable
WHERE
Data LIKE '%author%' AND
Data LIKE '%basic%' AND
Data LIKE '%data%'
答案 1 :(得分:1)
看起来你有像
这样的东西CREATE TABLE datatable('No' INT, 'Data' VARCHAR(...))
通过将大量属性分组到一个列中(VARCHAR
,CLOB
,BLOB
...),您无法利用SQL的强大功能。
如果您喜欢做类似
的事情CREATE TABLE <meaningful name>('No' INT, AUTHOR VARCHAR(...), TITLE VARCHAR, ...)
您避免使用LIKE
进行所有查询,正如评论者所说,您可以在最常用于访问数据的列上创建索引,以加快访问速度。
其他好处包括在数字数据上使用聚合函数以及与其他表连接。