2017-03-06 3 views
0

Je cherche à retourner tous les noms avec plus d'un espace dans un seul champ. Par exemple 'John Paul Smith'. L'utilisation studio de gestion de serveur SQL 2005SQL Renvoyer des noms avec plusieurs espaces

Exemple J'ai une table de patients avec le nom et prénom

Je veux retourner tous qui ont par exemple prenoms John Paul Smith »dans un champ.

La requête donnée semble fonctionner sur le champ de nom de famille mais pas le prénom. Je noue pour certain que les colonnes de prénom ont ces types de données, mais il ne renvoie aucun résultat. Con

+2

Quelle dbms utilisez-vous? (La réponse sera probablement spécifique au produit.) – jarlh

+0

Mais sérieusement, étiqueter votre SGBD – JohnHC

+0

Désolé ma première fois sur ce site. J'utilise SQL Server Management Studio 2005. – Conger88

Répondre

4

Oracle:

SELECT MyField 
from MyTable 
where REGEXP_INSTR (MyField, ' ', 1, 2, 0, 'i') > 0 

serveur SQL:

SELECT MyField 
from MyTable 
where CHARINDEX(' ', MyField, charindex(' ',MyField)+1) > 0 

MySQL

select MyField 
from MyTable 
where length(SUBSTRING_INDEX(MyField, ' ', 2)) < length(MyField) 
+1

Supprimer ma réponse et voter pour la vôtre! –

+0

Y at-il une raison pour que cela fonctionne sur une colonne et pas une autre? Semble fonctionner correctement pour la colonne de nom mais ne renvoie rien sur le prénom – Conger88

+1

@ Conger88 Pour plus d'assistance, modifiez la question et fournissez les données suivantes: Exemples de données, Sortie attendue, SGBD – JohnHC

1

Voici deux solutions qui, à mon avis sont plus faciles à lire/comprendre que JohnHC de.

  1. Il ne peut pas être plus simple. Utilisez des caractères génériques pour rechercher (au moins) deux espaces.

    SELECT * FROM your_table WHERE your_column LIKE '% % %'; 
    
  2. Vérifiez la longueur après avoir remplacé les espaces

    SELECT * FROM your_table WHERE LEN(your_column) - LEN(REPLACE(your_column, ' ', '')) >= 2;