我有一个名为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”也显示相同的结果。
答案 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 演示