sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Anpassad sökning med specialtecken

Jag tror att du enkelt kan lösa detta genom att skapa ett FULLTEXTINDEX på din KWD kolumn. Då kan du använda INNEHÅLLER fråga för att söka efter fraser. FULLTEXT-indexet tar hand om skiljetecken och ignorerar kommatecken automatiskt.

-- If search text is = Man,Businessman then the query will be
SELECT AS_ID FROM tbl_main
WHERE CONTAINS(KWD, '"Man" AND "Businessman"')

-- If search text is = Man,-Businessman then  the query will be
SELECT AS_ID FROM tbl_main
WHERE CONTAINS(KWD, '"Man" AND NOT "Businessman"')

-- If search text is = woman,girl,-Working  the query will be
SELECT AS_ID FROM tbl_main
WHERE CONTAINS(KWD, '"woman" AND "girl" AND NOT "working"')

För att söka efter flera ord (som mobile phone). i ditt fall) använd de citerade fraserna:

SELECT AS_ID FROM tbl_main
WHERE CONTAINS(KWD, '"woman" AND "mobile phone"')

Som kommenteras nedan är de citerade fraserna viktiga i alla sökningar för att undvika dåliga sökningar vid t.ex. när en sökterm är "surfplatta fungerar" och KWD-värdet är woman,girl,Digital Tablet,working,sitting,online

Det finns ett specialfall för en enda - sökterm. NOT kan inte användas som den första termen i CONTAINS. Därför bör frågan som denna användas:

-- If search text is = -Working  the query will be
SELECT AS_ID FROM tbl_main
WHERE NOT CONTAINS(KWD, '"working"')


  1. Importerar gammal mysql-datamapp

  2. Kapslade aggregatfunktioner

  3. Bygga en maskininlärningsmodell med SQL Server, ML.NET och C#

  4. Autocommit i Flask-SQLAlchemy