通过各种键字符串SQL获取行

时间:2013-06-24 04:03:30

标签: sql sqlite

我有一个名为product id,name,price等列的数据库。现在我需要通过提供类似"123 cooldrink 94"的字符串来获取行。然后它获取列包含这些字符串作为其值的行。对于这些,123可以是product id/price。但是需要获取这些字符串与列匹配的行。

product id  price  productname
123          94     Snacks
145          123    Cooldrink

如果我输入文本为“123 94”,则结果为1。可能是用户类型“94 123”也显示相同的结果。

2 个答案:

答案 0 :(得分:1)

终于得到了解决方案,

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

答案 1 :(得分: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 演示

现在,如果您需要确保两个关键字都是同一行的价格或product_id

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

这是 SQLFiddle 演示

另一种方法,如果部分匹配正常,则接近此

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 演示