2010-04-09 6 views
4

J'ai une base de données sur un serveur SQL Server 2000. Cette base de données possède une table appelée "Person" qui a un appel de champ "FullName" qui est un VARCHAR (100). J'essaie d'écrire une requête qui me permettra d'obtenir tous les enregistrements qui ont un nom. Les enregistrements qui n'ont pas de nom ont une valeur FullName nulle ou une chaîne vide. Comment puis-je obtenir tous les enregistrements de personne ont un nom complet? En d'autres termes, je veux ignorer les enregistrements qui n'ont pas de nom complet. Actuellement, je suis en train de ce qui suit:SQL Server 2000 - Filtrer par chaîne Longueur

SELECT 
    * 
FROM 
    Person p 
WHERE 
p.FullName IS NOT NULL AND 
LEN(p.FullName) > 0 

Merci

Répondre

3

rendre votre données cohérentes en premier:

UPDATE Person 
    SET FullName=NULL 
    WHERE FullName != '' 

puis interroger vos données sans se soucier des incohérences:

SELECT 
    * 
    FROM Person 
    WHERE FullName IS NOT NULL 

Si vous ne/peut pas fixer vos données, vous pouvez utiliser ceci:

SELECT 
    * 
    FROM Person 
    WHERE FullName != '' 
2

Ce serait le meilleur moyen que je suppose

SELECT 
    * 
FROM 
    Person p 
WHERE 
    p.FullName <> '' 
+1

EST PAS La partie NULL n'est pas nécessaire - la deuxième partie d'où exclut de tels enregistrements de toute façon. – Arvo

+0

Droit ... vous avez raison :) – Wolph

0

Que diriez-vous (ISNULL)

SELECT 
    * 
FROM 
    Person p 
WHERE 
ISNULL(p.FullName,'') <> '' 
+0

vous n'avez pas besoin de l'ISNULL() car 'null <> ''' est faux –

+0

Cela pourrait être discutable X-) http://msdn.microsoft.com/fr us/library/aa259229 (SQL.80) .aspx –