4
votes

Comment puis-je utiliser contient pour rechercher un mot-clé comprenant un espace?

Je veux utiliser contient avec la recherche d'un mot qui a un seul espace à gauche et à droite. Mais cela ne fonctionne pas ..

SELECT *
FROM mytable
WHERE Contains(name, ' Hertz ');

Toute aide est appréciée ..


4 commentaires

Je ne suis pas sûr que vous puissiez utiliser CONTAINS pour rechercher des caractères de fin. Vous pouvez rechercher des préfixes avec le caractère générique * ( CONTAINS (nom, '"*" Hertz') ). Vous devrez peut-être ajouter une clause supplémentaire pour valider que le dernier caractère est un espace.


À toutes les personnes qui répondent, l'OP demande CONTAINS qui utilise un index de texte intégral et se comporte différemment de LIKE .


Vous pouvez écrire la condition where comme - WHERE a.name comme '%%' Vérifiez ma réponse.


@Janna, vous pouvez tenter votre chance en publiant sur dba.stackexchange.com


8 Réponses :


0
votes

Essayez ceci:

SELECT *
FROM mytable
WHERE name like ' % '

Si Hertz n'est qu'un exemple, vous pouvez utiliser:

SELECT *
FROM mytable
WHERE name=' Hertz '

qui renverra tous les noms avec un espace en première et dernière position


0 commentaires

0
votes

Essayez comme ci-dessous.

SELECT *
FROM mytable
WHERE name LIKE '% Hertz %'

En savoir plus sur like opérateur


0 commentaires

0
votes

Vous pouvez essayer ceci

SELECT *
FROM mytable
WHERE name Like '% Hertz %'


0 commentaires

2
votes

Vous pouvez LTRIM RTRIM la colonne et pouvez obtenir les valeurs.

select * from #temp where name like ' %'

select * from #temp where name like '% '

Si vous voulez rechercher s'il y a de l'espace au début ou à la fin, utilisez la requête ci-dessous.

create table #temp
(
name varchar(50)
)

insert into #temp values(' hertz')

insert into #temp values('hertz ')

insert into #temp values('hertzx')

insert into #temp values('hertz')

select * from #temp where LTRIM(RTRIM(name)) like '%hertz%'


0 commentaires

0
votes

Pour rechercher avec des espaces inclus, vous devez mettre votre expression entre guillemets, comme:

SELECT *
FROM mytable
WHERE name LIKE '% Hertz %');

Bien sûr, cela peut également être écrit avec LIKE (bien que ce soit moins efficace lors de avec de grands ensembles de données):

SELECT *
FROM mytable
WHERE CONTAINS(name, '" Hertz "');


0 commentaires

0
votes

Si vous utilisez l’opérateur like , vous n’avez pas besoin de donner des espaces entre ceux-ci comme ci-dessous

select * from mytable where name like '_%hertz%_'

Et aussi si vous voulez que les données aient des espaces, vous peut utiliser comme ci-dessous

select * from mytable where name like '%her%'

Si nous utilisons trait de soulignement , il ignorera l'élément de position particulier et recherchera les données.

p >


0 commentaires

0
votes

Essayez ceci

Select * from mytable where replace(name,' ','')='Hertz'

Vous pouvez également utiliser ltrim & rtrim pour supprimer les espaces au moment de l'exécution afin qu'ils correspondent aux valeurs du nom.

/ p>


0 commentaires

0
votes

Vous pouvez essayer ceci

SELECT a.name
      FROM mytable a
       WHERE a.name like' % '

OU

SELECT a.name
  FROM mytable a
   WHERE a.name like ' %% '

Vous pouvez trouver la démo en direct Démo ici


0 commentaires