0

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

product id  price  productname
123          94     Snacks
145          123    Cooldrink

如果我将文本输入为“123 94”,那么它会带来第一个结果。可能用户类型“94 123”也显示相同的结果。

4

2 回答 2

1

终于找到解决办法了

 (productname like '%value1%' or productname like '%value2%')AND
 (productnumberone like '%value1%'or productnumberone like
 '%value2%')AND (price like '%value1%'or price like '%value2%')
于 2013-06-25T05:42:51.463 回答
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演示

现在,如果您需要确保同一行的两个关键字都是 price 或 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演示

于 2013-06-24T04:28:51.733 回答