2013-07-11 28 views
2

我有一個帶有文本字段的MySQL表,可以說字段名稱是Car。汽車的類型是文字。 我也有一些變量,如名稱,產品編號,日期,描述,地址,價格等選擇文本字段中有變量的行

現在我想從該表中選擇,只有行中有我的變量找到車字段值。

例如,我只想要查找匹配我的變量,行了,如果汽車文本是如果我的變量是name = Hondaproduct number = 4222date = 20131223description = very cooladdress = Street 59price = 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) 

我要的車列沒有分成幾個colums,這是一個條件

回答

1

肯定想你car柱拆分成若干列(每一條信息)。那麼該查詢將變得簡單,例如:

SELECT * FROM _table WHERE name = 'Honda' AND product_number = 4222 ... 

...但由於你的constaint,你可以做這樣的事情:

SELECT * FROM _table 
WHERE 
    car LIKE '<name>Honda XxX' AND 
    car LIKE '<productnumber>4222' ... 

如果使用準備好的語句,你可能想使用這個模板查詢,而不是:

... 
WHERE 
    car LIKE CONCAT ('<name>', ?) AND 
    car LIKE CONCAT('<productnumber>', ?)... 

但讓我堅持:如果您的應用程序是指在生產中去,如果你正計劃爲超過少數用戶,或者如果在這張表中不止是少數記錄,告訴誰負責這個結構非常,非常差。沒有索引可以使用,並且它很快就會變得不可用。

+0

我不能將汽車欄拆分爲幾個colums,這是一個條件 – ManY

+0

@ManY請參閱我的替代建議。 – RandomSeed