Comment puis-je sélectionner les lignes où CONTAINS search la valeur d'une colonne, pas une string

Je pensais que cela aurait déjà été demandé, mais je ne pouvais pas le find sur le débordement de la stack.

J'ai une table SQL Server appelée DataTable avec deux colonnes name et message . Je veux sélectionner toutes les lignes où "message" contient la même valeur que dans la colonne de name .

 INSERT INTO DataTable values ('frank','this is frank's message'); INSERT INTO DataTable values ('jill','this is not frank's message'); 

Je ne veux returnner que la première ligne, car la valeur dans la colonne [nom] ("frank") est dans la colonne [message]

  SELECT [name],[message] FROM DataTable WHERE CONTAINS([message],[name]) 

Cela jette l'erreur:

Syntaxe incorrecte près de 'nom' ".

Comment est-ce que j'écris ceci correctement?

Vous pouvez essayer avec LIKE , au cas où [name] puisse être contenu dans [message] :

 SELECT [name],[message] FROM DataTable WHERE [message] LIKE '%' + [name] + '%' 

ou vous pouvez utiliser = opérateur au cas où [name] devrait être égal à [message] .

Utiliser comme

 SELECT name, message FROM DataTable WHERE message LIKE '%name%' 

J'ai fait ça.

 insert into datatable values ('blabla','blabla') insert into datatable values ('blabla1','blabla1') insert into datatable values ('blabla1','blabla2') select * from datatable where messages=name 

résultats:

 messages name -------- -------- blabla blabla blabla1 blabla1 

CONTAINS nécessite deux arguments et renvoie un nombre un résultat présentant true ou false. Ce sera 1 (vrai) s'il trouve une correspondance et 0 (faux) si ce n'est pas le cas. Le premier argument est le nom de la colonne de la table que vous voulez searchr. Le deuxième argument est votre sous-string dont vous avez besoin. La syntaxe de base est la suivante.

 SELECT columnName FROM yourTable WHERE CONTAINS (columnName, 'yourSubssortingng'); 

De mon exemple ci-dessus, vous devez noter que je n'ai pas entouré le nom de la colonne entre guillemets, mais j'ai inclus les arguments pour la fonction SQL CONTAINS entre parenthèses.