我有一个带有文本字段的 MySQL 表,假设字段名称是 Car。汽车的类型是文本。 我还有一些变量,例如名称、产品编号、日期、描述、地址、价格等。
现在我想从那个表中选择,只有在 Car 字段值中找到我的变量的行。
例如,我只想找到与我的变量匹配的行,如果 Car 文本如下,如果我的变量是 name = Honda
,product number = 4222
,date = 20131223
,description = very cool
,address = Street 59
,price = 15000
。
<category>Compact car
<name>Honda XxX
<colour>Black
<productnumber>4222
<date>20131223
<code>US
<description>very cool
<address>Street 59
<price>15000
// ...
然后MySQL查询将只输出这一行。我还想作为第二种变体,输出类似的行,这些行只有一个不匹配的变量,例如,如果价格不匹配就可以了。
我不确定如何使用 MySQL 来做到这一点;也许有人知道并且可以提供帮助。
我认为这样的东西适用于第一个变体。
Select * From Car Where Car LIKE "%name%" AND Car LIKE "%productnumber%" AND ....
也许有人知道更好、更快的方法。比如下面是不是更好一些?
SELECT LOCATE("name", Car) AND LOCATE("productnumber", Car)
我不能将汽车列分成几个列,这是一个条件
最佳答案
您肯定想要将您的car
列拆分为多个列(每条信息一个)。然后查询将变得简单明了,例如:
SELECT * FROM _table WHERE name = 'Honda' AND product_number = 4222 ...
...但是考虑到你的约束,你可以做这样的事情:
SELECT * FROM _table
WHERE
car LIKE '<name>Honda XxX' AND
car LIKE '<productnumber>4222' ...
如果您使用准备好的语句,您可能希望改用此模板查询:
...
WHERE
car LIKE CONCAT ('<name>', ?) AND
car LIKE CONCAT('<productnumber>', ?)...
但请允许我坚持:如果您的应用程序打算投入生产,并且您打算为多个用户提供服务,或者如果此表中有多个记录,请告诉谁负责这个结构非常,非常差。没有索引可以用,很快就不能用了。
关于php - 选择文本字段中包含变量的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17590377/