这是一个简单的问题,所以我会保持简短:
如果我有以下SQL查询:
SELECT * FROM keywords WHERE * = ?
这可以作为搜索功能吗?假设表格关键字上的每一行都有10或20个"关键字,"这会找到其中包含?
的所有行吗?
基本上,星号可以用于SQL查询中的任何值吗?
更新: 我计划的表格是这样的:
-----------------------------------------------------
|ID |keyword1 |keyword2 |keyword3 |keyword4 |keyword5 |
-----------------------------------------------------
|5 |blablaa2 |blablaa3 |bla blaa4|bl abla?5| blablaa6|
-----------------------------------------------------
由于担心"维护和性能"我考虑过这个:
------------
|ID|Keyword|
|5 |blablaa|
|3 |blablaa|
|5 |blablaa|
|2 |blablaa|
|1 |blablaa|
------------
然后我的SQL查询就像:
SELECT * FROM keywords WHERE keyword = ?
在两者上,ID
将在另一个表中引用,关键字主要用于搜索该表。
答案 0 :(得分:1)
不在MySQL中。您可以在SQLFiddle上进行测试:http://sqlfiddle.com/#!2/5d394/1。
我从未见过人们使用通配符作为列名。我怀疑是否有任何RDBMS允许它。
您可以做的是创建一个名为关键字的表,列出表中每一行的关键字。您可以在该表上执行内部联接并搜索KEYWORD =?。
答案 1 :(得分:1)
首先,答案是否定的,但如果您将其更改为:
SELECT * FROM keywords WHERE column_name LIKE '%?%'
其次,从你的问题中不清楚如何构建表格。如果是这样的话:
-----------------------------------------------------
|column1 |column2 |column3 |column4 |column5 |column6 |
-----------------------------------------------------
|blablaa1|blablaa2|blablaa3|blablaa4|blabla?5|blablaa6|
-----------------------------------------------------
...
然后我之前写的答案将无效,设计也不好,应该每行替换一个关键字。另一种方法是按如下方式查询表:
SELECT * FROM keywords WHERE column1 LIKE '%?%' OR
column2 LIKE '%?%' OR
column3 LIKE '%?%' OR
...
但是,正如我刚刚提到的,这不是构建表格的好方法,您最好考虑如何重新设计它以获得更好的性能和效果。维护。