sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Tilpasset søgning med specialtegn

Jeg tror, ​​du nemt kan løse dette ved at oprette et FULD TEKSTINDEKS på din KWD kolonne. Så kan du bruge CONTAINS forespørgsel for at søge efter sætninger. FULD TEKST-indekset tager sig af tegnsætningen og ignorerer automatisk kommaerne.

-- 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"')

For at søge i flere ord (såsom mobile phone i dit tilfælde) brug de citerede sætninger:

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

Som kommenteret nedenfor er de citerede sætninger vigtige i alle søgninger for at undgå dårlige søgninger i tilfælde af f.eks. når et søgeudtryk er "tablet fungerer", og KWD-værdien er woman,girl,Digital Tablet,working,sitting,online

Der er et særligt tilfælde for en enkelt - søgeterm. NOT kan ikke bruges som det første udtryk i CONTAINS. Derfor skal forespørgslen som denne bruges:

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


  1. psql returnerer 'anonym' i resultatarray

  2. Forbindelsesstrengdannelse for Android til SQLServer-forbindelse

  3. MariaDB JSON_DETAILED() Forklaret

  4. mysql hierarkilager med store træer