SELECT
BrokerData.BrokerName,
Product.BAID,
Product.ProductName,
Product.ProductName,
Product.Type,
Product.RevenueFactor,
Product.VolumeFactor,
Product.PriceFactor
FROM Product
INNER JOIN BrokerData
ON Product.BAID = BrokerData.BAID
WHERE (ProductName Like '%xxx%' OR BaseProductName Like '%xxx%');
该查询将帮助用户搜索包含“ xxx”的产品。但是,数据库在某些产品名称中包含%,因此,当用户输入为1%时,它将给出包含“ 1”的产品。
我尝试使用CONTAINS,但这并没有帮助。以下是我使用CONTAINS的查询,但它也无法正常工作:
SELECT
BrokerData.BrokerName,
Product.BAID,
Product.ProductName,
Product.ProductName,
Product.Type,
Product.RevenueFactor,
Product.VolumeFactor,
Product.PriceFactor
FROM Product
INNER JOIN BrokerData
ON Product.BAID = BrokerData.BAID
WHERE CONTAINS ((ProductName Like '%xxx%')
OR CONTAINS (BaseProductName Like '%xxx%'));
你可以这样做。将您的用户输入替换为%到\%
示例代码示例:
CREATE TABLE data_with_percent(
data VARCHAR(255)
)
INSERT INTO data_with_percent VALUES('1%');
INSERT INTO data_with_percent VALUES('2%');
INSERT INTO data_with_percent VALUES('1');
SELECT * FROM data_with_percent WHERE data LIKE CONCAT('%',REPLACE('1%', '%', '\%'),'%');
测试如下:SQL Fiddle
谢谢你。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句