2013-06-24 55 views
0

我有一個名爲product id,name,price etc的列的數據庫。現在我需要通過給像"123 cooldrink 94"這樣的字符串來獲取行。然後它獲取列中包含這些字符串作爲其值的行。對於這123個可能是product id/price。但是需要獲取這些字符串與列匹配的行。通過各種密鑰字符串獲取行SQL

product id price productname 
123   94  Snacks 
145   123 Cooldrink 

如果我給「123 94」輸入文字,那麼它會帶來第一個結果。可能是用戶類型「94 123」也顯示相同的結果。

+0

那麼,它是MySQL,MariaDB,PostgreSQL還是什麼? – hjpotter92

+2

如果你提供了一些預期的輸出樣本數據,它將是非常有用的給予回答 –

+0

它只是sql ... – Shalini

回答

0

修訂一種可能的解決辦法可能是由空間客戶端上的分割你的字符串,然後使用這樣的查詢(如果你需要在列精確匹配)

SELECT * 
    FROM products 
WHERE product_id IN (123, 94) 
    OR price IN (123, 94) 

SELECT * 
    FROM products 
WHERE 93 IN (product_id, price, productname) 
    OR 123 IN (product_id, price, productname) 
    OR 'cooldrink' IN (product_id, price, productname) 

這裏是SQLFiddle演示

現在,如果你的東東d,以確保兩個關鍵字是價格或PRODUCT_ID同一行

SELECT * 
    FROM products 
WHERE (product_id = 123 AND price = 94) 
    OR (product_id = 94 AND price = 123) 

這裏是SQLFiddle演示

的另一種方式,如果部分匹配都OK,解決這個

SELECT product_id, price, productname 
    FROM 
(
    SELECT p.*, ',' || product_id || ',' || price || ',' || productname || ',' details 
    FROM products p 
) 
WHERE details LIKE ',%94%,' 
    OR details LIKE ',%123%,' 
    OR details LIKE ',%cool%,' 

這是SQLFiddle演示

+0

的第二個答案中的任何問題我認爲你的第二個答案是正確的這個問題 –

+0

它可能會很長,當我使用產品名稱,其他列作爲輸入時提取 – Shalini

+0

是的,它可能而且你必須指定你想要搜索的所有列和所有可能的值(搜索關鍵字),在標準SQL中沒有銀色的項目符號。 – peterm

1

終於搞定了,

(productname like '%value1%' or productname like '%value2%')AND 
(productnumberone like '%value1%'or productnumberone like 
'%value2%')AND (price like '%value1%'or price like '%value2%')