2

我有一个带有文本字段的 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)

我不能将汽车列分成几列,这是一个条件

4

1 回答 1

1

肯定希望将您的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>', ?)...

但请允许我坚持:如果您的应用程序打算投入生产,并且您计划为多个用户提供服务,或者此表中有多个记录,请告诉负责人这种结构非常非常差。没有索引可以使用,很快就会变得无法使用。

于 2013-07-11T09:59:37.043 回答